This is the multi-page printable view of this section. Click here to print.
Blog Posts - 2011
- Announcing Selenium Conf ’12
- A Smattering of Selenium #71
- A Smattering of Selenium #70
- A Smattering of Selenium #69
- A Smattering of Selenium #68
- A Smattering of Selenium #67
- Selenium 2.9 Released
- A Smattering of Selenium #66
- A Smattering of Selenium #65
- A Smattering of Selenium #64
- Selenium 2.8 Released
- A Smattering of Selenium #63
- A Smattering of Selenium #62
- A Smattering of Selenium #61
- A Smattering of Selenium #60
- A Smattering of Selenium #59
- Selenium 2.6 Released
- A Smattering of Selenium #58
- A Smattering of Selenium #57
- A Quick Survey on Features
- Selenium 2.3 Released
- A Smattering of Selenium #56
- Selenium 2.2 Released
- A Smattering of Selenium #55
- Selenium 2.1 Released
- A Smattering of Selenium #54
- A Smattering of Selenium #53
- Selenium 2.0: Out Now!
- New ChromeDriver
- Selenium IDE 1.0.12 – now with Firefox 5 support
- A Smattering of Selenium #52
- Selenium 2.0rc3: The “Next One’s The Big One” Release
- A Smattering of Selenium #51
- Selenium 2.0rc2: The Better Working Release
- Selenium 2.0rc1: The Grid Release
- Selenium IDE 1.0.11 – Now with Firefox 4 Support!
- A Smattering of Selenium #50
- A Smattering of Selenium #49
- A Smattering of Selenium #48
- A Smattering of Selenium #47
- A Smattering of Selenium #46
- A Smattering of Selenium #45
- Selenium 2.0b3: The Next Gen Browser Release
- A Smattering of Selenium #44
- A Smattering of Selenium #43
- A Smattering of Selenium #42
- Selenium 2.0b2 Released
- A Smattering of Selenium #41
- OperaDriver Released
- A Smattering of Selenium #40
- Selenium Joins the Software Freedom Conservancy
- A Smattering of Selenium #39
- Bug Bash Aftermath
- 2.0b1 and Maven
- A Smattering of Selenium #38B
- A Smattering of Selenium #38A
- Bug Bash: 24-30 January
- A Smattering of Selenium #37B
- A Smattering of Selenium #37A
- Selenium Conf is coming… get your proposals in!
- A Smattering of Selenium #36B
- A Smattering of Selenium #36A
Announcing Selenium Conf ’12
The community around Selenium is the thing that really makes the Selenium project special. Last year, we held the first official Selenium Conference in San Francisco, and it was both great fun and a huge success. It is therefore with great pleasure that we are announcing Selenium Conf ’12! It’ll be taking place in London from the 16th to the 18th April, and we’re really looking forward to seeing you all there!
If you’ve been following @seleniumconf on Twitter, you probably already know that we have some early bird tickets available and the Call for Papers is open. We’re looking for everything from lighting talks, through traditional presentations, to half-day long workshops on anything that uses Selenium in any way, including building on the Selenium WebDriver APIs (so talks about Watir would be welcome too!). It’ll be a chance to show off what you know and learn from the experts. If you get a quiet moment during the Christmas break, why not put forward a talk? If you’re not a talker, but can help us with sponsorship, we’d love to hear from you too!
Just as last year, the workshops will be happening on the first day of the conference, but places are limited. We plan on running a total of four workshops across two tracks, meaning each workshop is half a day long; a fantastic opportunity to take a deep dive into a particular area of the project. The early bird tickets give you access to them, as well as the conference itself on the 17th and 18th.
The conference will consist of a main single track with selected speakers, with break out rooms being dedicated to an unconference, the contents of which will be decided by attendees. It’ll be your conference, help us make it brilliant 🙂
A Smattering of Selenium #71
Looking like there might also be one later in the week too…
- As we start to transistion the web over the HTML5, I keep thinking about incorporating some ‘static’ checks into Se scripts. HTML5 Accessibility Chops: using nested figure elements explains some good (and bad) ways to use
- Jim took my nudging the organizing tests post I linked to last time and expanded on Organize Your Tests, Part II: Use Metadata!. I really like the separation of execution and organization which is not something I had explicitly thought about before.
- A quick screencast on using the IPhoneDriver and jQuery Mobile.
- A bash script to set up Quickstart as a continuous integration appliance. is kinda trick, but I personally would use something like Puppet or Chef to do this.
- How I Replaced Cucumber With 65 Lines of Python is full of build-a-better-lightsaber goodness.
- Is there a way to perform a mouseover (hover over an element) using Selenium and Python bindings? illustrates one of the lesser documented parts of the Python bindings: ActionChains.
- Ebselen is another Mavenised Selenium test framework
- Not sure if this applies to how people run Se scripts with Visual Studio, but Fixing Parallel Test Execution in Visual Studio 2010 seems useful enough to link to.
- The snowday formatter for RSpec is so unbelievably awesome. Maybe my frameworks needs to grow this for the holiday season. Hmmm…
- junitparams is an alternate runner for JUnit to enable more readable parameterized scripts.
A Smattering of Selenium #70
That’s it for this week. 🙂
- For TestMate / Java folks, TextMate-Bundle-Selenium-Java could be interesting.
- We’ve all made Oopses when writing / interpreting Se scripts, so it is important to remember that Mistakes: Transparency is Best
- Organizing scripts is one of those topics that gets both too much and not enough attention. Organizing Your Tests adds to the discussion — though completely omits using ‘tags’ (which his product supports…)
- Not sure how this will affect automation of Android or not, but still pretty cool.
- Being able to package up shared code for even just internal distribution is an important step in large scale automation. So, How Do I Create And Publish My First Ruby Gem?
- fog looks like it tries to provide a common api abstraction to a number of cloud providers.
- The Secrets of Successful Test Automation is a summary of a talk Lisa Crispin did recently.
- A Python Optimization Anecdote is a great step-by-step description of how a piece of python was optimized.
- Introducing Flow Visualization: visualizing visitor flow seems like a neat way to determine which flows through the app to automate first. Unless of course your visitors are jerks like me who have /dev/null’ed GA.
- And we’ll finish off with a cartoon – Development Driven Tests
A Smattering of Selenium #69
In honor of this edition I provide…
…in which I also date myself.
- CITCon is another one of those conferences I should go to but haven’t. Yet! 7 continuous integration ideas from CITCon is a quick list from the most recent iteration.
- Testing Facebook authentication with Rails 3 Cucumber, Capybara, Selenium has a nice little trick to get Facebook to authenticate back to your Rails stack.
- pennyworth is a ‘continuous packaging system’ which seems like an interesting description.
- Acceptance Tests With JBehave, Selenium & Page Objects. We need more examples of how to do Page Objects in ways that align with the runner’s model of the world.
- When to Wait with Webdriver walks through getting synchronization working. I like that implicit waits are just a middle step.
- Using WebDriver, jBehave to test dynamic web forms seemed like overkill at first, but on more careful reading is pretty clever.
- I’ve been thinking about Code Kata’s recently, and here is a Code Kata with DDT in JUnit. We need, as a community, to come up with some of these for Se.
- In somewhat sad news, Bromine which is [was] powered by Se is ending development
- Orders of Magnitude in Test Automation proposes some smell tests to determine if you are overly heavy in one type of automation or another
- Want to make a Python decorator but feel you might be inventing the wheel? PythonDecoratorLibrary [currently] lists 31 different decorator implementations so you don’t actually have to reinvent that wheel. Unless you want to of course…
A Smattering of Selenium #68
Its been almost a month, so time for a flurry of Smatterings.
- Maven has a bad reputation in some circles (ignoring for a second that you are using Java…), but should you be using it the QuickStart Archetype looks interesting.
- Why Your Monitoring Is Lying To You talks about types of logging which are valuable both from a Continuous Delivery perspective and for checking the health of your application during long script runs.
- I still maintain that they who nails QC integration with/for Se will get buckets of money from people. Here is one attempt at it: Quality Center Integration
- Good to Great Python reads is I think now on my list of things to hand new (and seasoned) Python folks.
- Test Harness Design Patterns is from 2005 but still interesting.
- jacuzzi is superficial wrapper over RSpec + Capybara + Selenium test setup and execution
- Because I don’t already have enough backlog on videos, the 2011 Jenkins User Conference videos are now online. Though behind a registration wall. I know why companies do this, but boo on you.
- This is how you publish videos from a conferences – GTAC 2011. Note that this is how SeConf did it too..
- Awesome Page Objects In Testing uses Bing as its example to explain Page Objects in Ruby
- Ignore the Se-IDE suggestion, but Improving Your Drupal Testing Process has an ‘assumed to work’ list specifically spelled out. Too often this is not explicitly made — and agreed upon as acceptable risks by stakeholders
A Smattering of Selenium #67
- Spinach is a Cucumber-esque BDD framework that was advertised on twitter as having ‘less regex magic’. Not sure if it has grown Se support yet, but I have no doubt that it will soon.
- Coping With Big C.I. is full of stuff that is useful for even Small C.I.
- Sane AJAX Testing in Selenium uses ‘reintroduced page loading’ for what I would call a ‘latch’ but describes it better I think. Or at least differently.
- Testing an SVG game is yet again pushing the envelope towards full online game p0wnage with Se.
- Alright. And for the two people who haven’t seen it already here is Jason Huggins’ Angry Birds-playing Selenium robot
- How to get faster Selenium test cases execution is about RC — but still worth the read. (And if Cybozu Labs’ XPath engine is so much faster than Google’s then why hasn’t the default been switched?)
- Here are some Browsermob Adhoc Queries for after you have done your Se-based load run(s)
- Why would you care about Fabric? Well, you have to get the code up and running on the server don’t you? In 1.3 you now have Parallel execution available to you.
- This Interacting with new Developers… deck is making the rounds.
- Selenium WebDriver tips includes how-to-do-basic auth with is something I don’t think I have seen yet.
Selenium 2.9 Released
We’re pleased to announce the release of Selenium 2.9. As well as improving the stability of Grid under high loads, we’ve added an experimental (and temporary!) feature that allows the Firefox driver to use a different mechanism for determining when a page is loaded. This is designed to handle the case where the driver appears to hang, as it’s waiting for all incoming requests to complete before continuing. How to enable this mode is listed in the changelog.
This release also includes an updated Android driver, allowing your tests to run on Ice Cream Sandwich devices.
A Smattering of Selenium #66
Aside from one of the dog’s tummy making noises that imply a big mess to clean up later, this scheduling thing seems to be working out.
Heard someone talk about doing bitmap comparisons last week somewhere. Adaptive Images tricks I suspect are going to become more commonplace. Good luck with that. Se is best at interaction, structure and content checks; not does-it-look-the-way-some-human-intended. Robots where robots should be used. Humans where humans should be used.
Interacting with a Javascript confirmation from Selenium in Cucumber
Converting Selenium waitForCondition to WebDriverWait sends you along the path to understanding Waits in WebDriver
Splinter seems like a wrapper about the Python WebDriver bindings
Making a Mockery of TDD starts with To be a successful mockist, you must dislike mocks. which I think is just as important when doing Se. The res of the article is good too.
Integration Testing with RSpec, Capybara, and Selenium includes this gem
Integration tests can be brittle if they know too much about how those components work. Proper integration tests use your application as a black box. They should know as little as possible about what happens under the hood, they’re just there to observe and interact with the interface.
I seem to think I already posted this, but the search isn’t finding anything. Here is a visualization of the commits to Se.
The GoogleWebmasterHelp channel on YouTube is full of ideas that you could include in your scripts. At least from an SEO perspective. And Google SEO at that.
The theme this week seems to be GIL. So here is About concurrency and the GIL which for once is about Ruby.
The whole ‘Facebook switching from Watir’ thing produced at least one good rebuttal; Facebook, Watir And Testing
A Smattering of Selenium #65
Trying something new; queuing up the catch-up post while I have time to catch-up.
- I’ve been lead to believe that Functional Testing with Arquillian is a Big Deal&tm;. Of course, I just see a lot of Java…
- If one thread raises an exception, why aren’t other threads’ finally blocks called? is an interesting question with a nice answer. If you start running scripts in parallel, this, and the GIL is something to keep in mind.
- My favourite part of posts like Using Test Oracles to Ensure Your Tests’ True Validity is they always have a ‘this is how I learned this the hard way’ story in them.
- I’m getting more and more convinced that the route to WebDriver powah! is through the JavascriptExecutor. As illustrated in setContext(..) is back for Selenium2 😛
- One important trick to maven is knowing how / where to bind server control to. Testing webapp startup on Jenkins using Maven, Tomcat and Web Driver might be a bit grand a title, and is using HTMLUnit (why?! do your customers use that browser? really?) but illustrates the maven part well.
- Since we’re in the HTML (findin yur bugz) whilst automating anyways, You’re Doing it Wrong: Common HTML Tag Misuses is something to keep at the back of your mind.
- And since we’re critiquing the HTML, why not how the database schema is designed and its impacts on API design. Identifiers are not numbers
- Patchwork is a library that lets you monkey patch in PHP. Haven’t found a need for it yet, but I keep thinking I will.
- Making Facebook Self-Healing is just darn cool. And unfortunately most things in the Immunization/Healing space are highly customized and not really candidates for open sourcing.
- Taking screenshots with Selenium WebDriver in C#
A Smattering of Selenium #64
How did I fall behind again already?!?!
- This is a pretty good deck. Automation Isn’t All Shiny Toys
- If your work is divided in time-based goals then providing videos of the end result is a fantastic idea. See Dave’s Q3/2011 in review. The last two screencasts directly relate to Se
- The training wheels came off is outstanding! I’ve been saying this around Se-IDE for years.
- If you have tried automation-in-anger with Python, then you have likely spent some time swearing at the GIL. Thankfully David Beazley finds the GIL ‘fun’ and has posted some slides about it. here and here. Such geeky fun.
- Feature Switching is an important concept to get your development team wrapped around if doing automation; Feature switching: a better way to collaborate even has a common project feature-switch-inated linked to at the end.
- Another important thing is hosting your own respository of build artifacts. Repository? That’s not a repository
- Logging Selenium 2 Events in Twist is a product centric spike report — but is a good read if you want to extend WebDriver
- This ‘Learn your tools’ reminder is brought to you by diving down the stack
- Automated configuration management with Puppet? Geppetto seems to be an important addition to that toolset.
- The 5 steps to the parallel web testing epiphany
Selenium 2.8 Released
In keeping with our (roughly) weekly releases, Selenium 2.8 was released today (and on Maven too), with a *huge* list of bug-fixes! As well as improved stability, if you’re using the Java API, this release adds the ability to upload files to a RemoteWebDriver server (see RemoteWebDriver.setFileDetector).
Particular thanks have to go out to our two newest committers, Alexei Barancev and Ajay Kemparaj, for the copious bug-fixes they’ve contributed!
We’re already hard at work getting 2.9 ready for next week with even more more bug-fixes – watch this space!
A Smattering of Selenium #63
- Watir to WebDriver: Unit Test Frameworks – Well, its ‘big’ news. Of course, Watir can use WebDriver so they didn’t have to port their scripts to a different API (I sure hope they have the API well abstracted away from their scripts). And of course the title of the post implies that Facebook thinks that Watir/Selenium scripts are ‘Unit’ tests which is suspect at best…
- Selenium tests for Jenkins — Yup; Jenkins now has a set of Se scripts for it. Fork, modify and sent pull requests.
- Thucydides appears to be another full-feature framework built around WebDriver
- NativeDriver and iOS: First Impressions looks to be the first of a series of posts about automating mobile apps
- Managing Locator Builders in Selenium IDE introduces a new feature that we snuck into the most recent version of Se-IDE. Still needs a bit of polish, but we’re getting there.
- The evils of `except:` is a good reminder about naked excepts in your code. Doubly true in automation where you really want to have exceptions bubbling to the top.
- Adding Mozmill tests to the Selenium IDE build system walks you through how to add Mozmill tests to a CI environment. A lot of Se-IDE plugins are really only testable through Mozmill.
- So who is going to buy me a Keep Calm and Continue Testing t-shirt.
- And while we’re at it, who is going to add Se to the Ubuntu Software Center
- This issue’s debate is At Least Three Good Reasons for Testers to Learn to Program vs. At Least 3 Reasons for Software Testers NOT to Learn to Code. Of course, if you are doing Se stuff, that alone is reason to learn to code — automation is programming.
A Smattering of Selenium #62
All opinions, all the time…
- It all began with Test Design for Automation which lead to Automated Test Design (riffing/ripping off Alan Page)
- And then through some weird Jedi mind control there was Design for *GUI* Automation which in turn led to more UI test design (once more from Alan Page)
- And heck, why have two articles from the same author when you can have three?! It’s (probably) a Design Problem — though I don’t think Chris has riffed off this one yet…
- Remember, Not Every Test Should be Automated!
- Dependency Injection Is NOT The Same As The Dependency Inversion Principle — not that I really understand either really…
- Who knew a collection of scrapebookers is called a ‘crop’? Also, a ‘scrapbooking consultant’? — automation is hard, let’s go scrapbooking! Anyways, Taking on Water is dead on in terms of which things to prioritize when automating.
- Improving the Maintainability of Automated Test Suites by Cem Kaner is an older paper, but the Strategies for Success on page 3 are important. Especially 1, 2 and 5.
- Also from the vaults is Harold’s Corollary to Knuth’s Law which is aimed at Unit not Functional tests, but still is food for thought.
- Why Continuous Deployment Matters
- The Little Black Book on Test Design is meant for exploratory testing, but I bet there is stuff one could pull out of it for automation purposes as well.
A Smattering of Selenium #61
‘These are the people in your neighbourhood…’
- Like the power of WebDriver, but not the API? Watir WebDriver will get you going with the Watir API. Lots of useful stuff there.
- So does Alister Scott’s WatirMelon blog
- Sikuli Plays Angry Birds on Google Games — just because scripts that play games are fun.
- cukeforker is for ‘Forking cukes and VNC displays.’
- First time I’ve seen a group of machines referred to as a ‘fleet’, but its appropriate. http://cloud.ubuntu.com/2011/09/oneiric-server-deploy-server-fleets-p1/
- SpecRun bills itself as ‘a smarter integration test runner for SpecFlow’
- ifttt (if this then that) looks like a love child of sikuli and yahoo pipes
- A TextMate bundle that formats JSON strings? Sure! A TextMate Bundle for JSON That Formats Properly
- Improve your Perl by making it look like Python with Acme::Pythonic
- Binding News
- New driver – AutoIt
- Selenium::Remote::Driver isn’t new, but is now in CPAN
- New driver – Go
- A Survey of the Php and Selenium Landscape
A Smattering of Selenium #60
This instalment of catch-up week is brought to you by the letters C and I.
- The pre-scm-buildstep plugin for jenkins adds a useful step into the job workflow.
- Understanding your tools is important. Here is an explanation of Jenkings Action and its subtypes
- You think your CI setup is impressive? Check out the Apache Foundation’s Jenkins server
- The easiest way to get CI going is with the ubiquitious but completely unoffically Ant JUnit XML format. Publishing Python unit test results in Jenkins discusses a python package a bit for it.
- To me, using a headless browser like HTMLUnit makes very little sense. Now, a headful browser on a headless machine — that makes sense. Setting up Jenkins CI to run selenium tests and record video in three easy steps explains how to do this in Ruby.
- Travis CI – Selenium setup shows the similar thing minus the recording of a video for the Travis CI environment.
- So far it seems that one should just subscribe to the Multunus blog and be done with it. Or at least the continuous delivery category.
- Think your web app deployment is ‘hard’? Continuous Delivery: How do we deliver in 3 clicks to 7000 machines? discusses a .NET client application. Now go count your blessings and get that remote svn export scripted.
- Won’t somebody please think of the systems? looks at CI with a bit of an ITIL lens
- Distributed Check-in Tokens: Pass-The-Puppy presents a quick technical solution for not breaking the build through tokens. You could of course talk to each other but there are sometimes time zones conspiring against you.
A Smattering of Selenium #59
Its been a month and a half since the last one of these, and the volume of links I have collected illustrates that. So this week is now a cleanup week.
How Browsers Work: Behind the Scenes of Modern Web Browsers seems to be one of those articles that people who automate browsers for a living should be familiar with.
100% Test Coverage is always the goal.
Continuous Deployment and Data Visualization reminds us that if some data is good, more is often better.
This is for JUnit, but the ideas apply to any runner.
JUnit Kung Fu: Getting More Out of Your Unit Tests
View more presentations from wakaleo
Database Cleaner is a set of strategies for cleaning your database in Ruby. I think you should just let your database get dirty (since that’s what happens in production) but I’ll give that there are scenarios where that’s not desirable.
The Zen of UI Testing with Selenium, Hudson and Sauce Labs illustrates a nice switch in the @Before method to run either locally or in the cloud (in this case with Sauce Labs). Limiting your framework to be always in the cloud or always behind your firewall is silly these days.
What’s wrong with Ruby’s test doubles? has good overview of the types of test doubles there are. Front-end automation should be generous use of the ‘Stub’ brand I think.
Automation is programming. And Page Objects are OO. So How to Design Classes is pretty darn interesting.
The Samuel L Ipsum really needs an API so we can use it as a random string generator for automation.
For one project I’m working on, I am validating whats in the browser with a JSON feed. JSON Formatter has been a saviour the last week.
Selenium 2.6 Released
If you’ve been watching this blog carefully you’ll have noticed that the last release announcement we made was for 2.3, so it may come as a surprise that we’re announcing that 2.6 has been released (even on Maven!). Don’t worry: 2.4 and 2.5 were released on time and without muss or fuss. 2.6, on the other hand has been almost three weeks brewing.
Selenium 2.6 introduces a raft of improvements and stability fixes. Kristian Rosenvold has been working wonders on Grid 2.0, addressing many reported issues and cleaning up the implementation. In the finest tradition of the project, I now owe him a dinner for his hard work. Thank you, Kristian!
For those of you not using Grid, as well as the normal suite of bug fixes, Selenium 2.6 now supports all versions of Firefox from 3.0 up to 7. For those of you using Java, there is an ExpectedConditions class that supplies many useful criteria when using the Wait and WebDriverWait classes. The packaged version of the OperaDriver has also been bumped to 0.7.2, which works hand-in-hand with Opera 11.5 and above.
We’ve also spent a considerable amount of time and effort working out the kinks in the Advanced User Interactions API. We’d love to hear how you’re using it, and what the gaps are that you can see. For more details about what’s changed, have a look at the release notes.
The release frequency has dropped recently, but we’re planning to head back to weekly releases from here on in. 2.7 is just around the corner!
A Smattering of Selenium #58
And here we go again with more links than I thought I had collected…
There are a metric tonne of site on the internets which are on how to scam your way through a Se interview. Hiring Selenium QA people provides some fodder on how one could look for and hire Se folk.
Why I don’t use spork reminds us that pain is [sometimes] a good thing.
The Jenkins project is having a conference on October 2 in the same hotel that SeConf was held.
So long, farewell, and thanks for all the automation lessons learned (or: o hai beautiful Page Object Model AMO Selenium tests!) could win the prize for the longest title ever. And has a good lessons learned section at the bottom.
Selunit lets you run your Selenese inside something like Jenkins
ATDD is still ‘the next big thing’, but Raconteur seems pretty darn cool. If I worked in C# that is…
From Agile 2011 we have
Continuous Integration, the minimum viable product
View more presentations from Julian Simpson
Pay close attention to the database section. I’m getting more and more convinced that this is the part that most companies can benefit the most from.
How to get the args of a function in Python is one of those geeky things that is super helpful and likely a smell that you are trying something you shouldn’t be at the same time.
Is your test automation actually agile? A Guardian Content API example. is part two of one linked in the last Smattering. And the last paragraph is so full of win.
Our friends at Watir have released Watir 2.0. Congrats!
I’ve not tried to run Cucumber in Jenkins, but explains how to do it should you have need
More people should make logos out of lego.
Waiting for elements when UI-testing with WebDriver and EPiTest explains a bit about the WebDriverWait class and has The road to UI-testing hell is paved with Thread.Sleep which would get it linked to in any event.
One thing that keeps getting brought up around WebDriver is ‘how do I get the http code of a request?’. The short answer is you don’t. The long answer is you have to do something like HOWTO: Collect WebDriver HTTP Request and Response Headers
How Cadence Predicts Process reminds people to look at all parts of the process when speeding things up
When building frameworks or DSLs it is useful to know how to make things as deprecated. deprecatable is one way to do it in Ruby
Exploratory Testing in an Agile Context is another session handout from Agile 2011.
#Selenium Tales from the road part 1 – Artifact Naming and Organization describes one way of organization your Se stuffs. That you need a convention I think is exactly why you should use dynamic suites via tags, but…
The PyCon US 2012 Call for Proposals is now out.
Continuous Deployment of iOS Apps with Jenkins and TestFlight describes how to build iOS apps in Jenkins (and if you want, pushing them up to TestFlight)
Why oh why am I only just discovering requests which makes Python’s urllib2 usable.
How to be a faster writer isn’t about writing scripts or code, but its ideas are still sound.
I pretty much refuse to read anything in ACM format, but On the Criteria To Be Used in Decomposing Systems into Modules could be of interest to someone without my biases.
An Inside Look at the GIL Removal Patch of Lore is the geekiest bit of writing I’ve read all month.
I had forgot how much I enjoy purpose built sites like Is the internet down?
I did a webinar on Page Objects the other week for which the video is now available. Its not embeddable, but there is at least a link around the registration wall above the form.
A Smattering of Selenium #57
Phew. The links made it through the Lion installation.
- Distributing the Same Test to Multiple Processes shows a technique for debugging flaky scripts
- Repeat after me: I will not automate GMail unless I am Google. Or if you will, you will do something like what is described in Verify email confirmation using Selenium. Notice that they are not using Se for it.
- Selenium and Nagios is something more teams should do I think.
- ‘This started out as a…’ usually means the discovery of a rabbit hole. Towards better acceptance test automation… has a great diagram where all roads lead to accidental complexity and The A Team the proposes solutions to those complexity problems.
- Specialized Skills remarks that ‘life is like a box of crayons’ — I’ve been having this conversation around automation again recently. When everyone blurs their specialization boundaries you have a [chance] of success.
- Performance Testing Practice Named During Online Summit names a practice we’ve often used — User Experience Under Load
- Introducing page-object gem showcases a pretty nice looking gem.
- Often people link to W3Schools.com when explaining XPath, CSS, etc. Please don’t. W3Fools explains why.
- Is there another Se-in-the-cloud provider coming? The testingbot gem seems to imply so
- FluentLenium lets you write JUnit scripts that look like JQuery code
- Mining Cucumber Features has a cool investigation trick that could be adopted to larger scopes than just cucumber
- Image to CSS Conversion with Img to CSS API is likely something I would explore if I was going to compare page image contents.
- Selenium IDE I think runs afoul of the attractive nuisance doctrine
- Are you a tool vendor? Here are some steps you can take to avoid a curse being placed upon you
- Test automation that helps, A Guardian Content API example is a bit of an exploratory automation experience report but also reminds that the point of all this is to get new information.
- Your Chrome browser might not be using HTTP anymore is my new Example One for why the browser vendors need to be the ones to provide the automation hooks. Which in this case, they do.
A Quick Survey on Features
Rather than surprising the general community in ways that we have become somewhat known for, I figured I would try something new. Actually asking about usage of things before changing them in fundamental ways.
To this end, I have created a quick(!) survey about changes that are under consideration regarding UI-Maps and how Se-IDE is opened.
The survey is only two questions, so I’m hoping for a large response. I’ll post the results next Monday (August 8, 2011).
One more time for good luck, the survey is over here.
Selenium 2.3 Released
Continuing our new tradition of weekly releases, we’re very pleased to announce the release of Selenium 2.3. The release notes for this version are pretty slim:
- Better detection of clickable areas in Firefox.
- Merge of Google-contributed code into the underlying javascript libraries used by the drivers.
We’ve also fixed bugs, one of which was being a nuisance for users of IBM’s JRE. The complete changelog can be found in the zipped downloads or in our source tree.
If you’re a Chrome user, then it’s a great idea to head over to the Chromium project’s download page to pick up the executable used by the ChromeDriver. It’s recently been updated, and now includes support for handling alerts and prompts! Thanks, Google!
A Smattering of Selenium #56
Safari is starting to whinge about how many tabs I have open which means it is time for another post.
Ripple-UI is a cross-platform, mobile web application emulation environment. From RIM. Could be something interesting.
Tips From Our Codebase To Help You Write Reliable Selenium Tests has nothing I don’t violently disagree with. And makes me think we should just add Implicit Waits to the Se Server and be done with it.
WebDriver does not support Sizzle’s extensions to the CSS standard. As it rightfully should not. But it you really want to, you can do something like Creating a Sizzle CSS Selector handler for Selenium2/WebDriver in Java.
One of the things that Sizzle adds is :nth. Instead, we should likely start to think about is :nth-child. Useful :nth-child Recipes
Follow Up to Maintainable Automation ends with A long-term automation strategy isn’t just about writing great tests that help you deliver awesome software, it’s also about keeping your sanity as your software and tests evolve.
On the PageObject Pattern attempts to write up the Page Object Pattern in ‘proper’ Pattern format
CI systems are all about communication. And desktop monitoring apps can assist in that. And if you are using Jenkins then Jenx seems neat
How to use RobotFramework with the Selenium Library is a step-by-step tutorial for getting your first automated specification working.
rsel provides a Slim fixture for running Selenium tests, with step methods written in Ruby.
Slides from the latest SFSE..
The new Testing Pyramid is great.
Reliable tests with Selenium WebDriver
Slides from a webinar I gave yesterday.
I’ve seen a lot of keynotes. Most suck, this one doesn’t.
[blip.tv http://blip.tv/play/AYHluEYC%5DImproving developers enthusiasm for unit tests, using bubble charts is just cool
Google Chrome joins Simpletest Selenium framework for Drupal
Have a hard time finding unique CSS Selectors? CSSelectify Firefox plugin to help you locate unique CSS Selectors on a page could help
Don’t use IDs in CSS selectors? has some insight into how CSS actually work.
An Experience Report: Feature Toggling — which of course you should be using to turn off all the 3rd party crap that slows down your site during runs.
Selenium 2.2 Released
The feedback from the last release was heard loud and clear: little and often it is!
We’re proud to announce the release of Selenium 2.2. What’s new this time? For many users, this is simply a bug fix release as there are no new major features. One thing you might appreciate is better exceptions being thrown when xpath searches return something other than a web element when using the WebDriver APIs, and we’re continuing to tweak the emulation of user events.
If you’re a .Net user, there is now an official NuGet package, and if you’re a maven user then rest assured the release is heading to the central repo as quickly as we can manage.
A Smattering of Selenium #55
Last week we released Se-IDE 1.1.0 which now features WebDriver formats and Se 2.1.0 was released about an hour ago. Simon will post something shortly-ish on what’s changed.
I haven’t messed around with HTML5 goodies yes, but fake-html5 seems like it could be interesting.
The Yii framework has grown WebDriver support. Now if only there were not two competing PHP implementations for them to have to choose from…
If you are using Python’s native packaging system to share your framework, then Lies, More Lies and Python Packaging Documentation on `package_data` could spare you some headache
This presentation kinda needs someone in front of it to make it fully understandable, but they chose great photos so I’m including it.
View more presentations from Fabio Fabbrucci
Sikuli on Selenium- A demonstration of automation using selenium and Sikuli (such as flash uploader) uses Sikuli where one might normally have used AutoIT but can’t get a handle onto the window. ….And with that use case for Sikuli arrives.
Ever wondered what you get when you cross alcohol and Se? Wonder no more.
Visual Studio seems like overkill for Python work, but if thats your cup o’ tea then Python Tools for Visual Studio is for you.
Creating users for the duration of a run is a problem a lot of systems have. But not with Facebook which has a Test Users API it seems. Don’t forget that you can use this idea internally in your apps too.
With the release of Selenium 2, the project is focuses not on being a browser test platform, but a browser automation one. The difference can be subtle but one area of big difference is in terms of network information details. Selenium RC has support for it, but Selenium WebDriver does not. And of course the latter is the future of the project. 99% of the time, you really don’t need the network information, but in that other 1% the official response to the problem is use something like the BrowserMob Proxy which also had Ruby bindings released this week.
Selenium 2.1 Released
Now that Selenium 2 has been released, one of the goals of the project is to provide regular updates to our users and the community. The aim is for these updates to be small and manageable, incrementally addressing issues and problems raised by you. Selenium 2.1, which is launched today, marks the first of these regular, small releases.
Selenium 2.1 is largely focused on improving Grid with a host of minor improvements including better tracking of “orphaned” browser instances. There are also some bug fixes in the Firefox and IE WebDrivers, particularly when dealing with elements that are just off screen, and in making the Selenium RC emulation in the Java bindings more robust when confronted with pages that haven’t started loading.
As you can see, this is a “bite size” release, but we’d love to know: would you prefer these small, swift releases or larger ones? Please answer in the comments, or on the mailing list!
A Smattering of Selenium #54
Two Smatterings in two days?!!? That never happens. Well, except when I get behind and have a metric tonne of links queued up.
- Next week appears to be Meetup week with ones in London on Tuesday, Toronto on Wednesday and San Francisco on Thursday. It’s like we coordinated or something. (But didn’t.)
- Last month’s SFSE meetup was on framework design. Here is the slides and the video.
- Selenium Smells goes on a bit of a rant (and provides solutions) to people putting sleeps in their code instead of proper synchronization. For the record, this is the first thing I do when I’m auditing people’s Se code.
- Se isn’t really designed for the ‘look and feel’ aspect of automation, but Selenium test for computedStyle a way to do it.
- Using Watir and want to use the new Opera driver? Its easy-peasy according to Using Opera with Watir-Webdriver (for free)
- What’s a Smattering without some crazy geek thing that helps you learn your tools better? __slots__. There you go.
- More build pipelining — this time with Jenkins. Our Jenkins Build Pipeline setup
- Nobody Understands REST or HTTP could be added to me required reading list.
- Read the last paragraph of of 404s, automation and other things. Now read it again.
- Mozilla practices what it preaches in terms of the Open Web as discussed in These are your tests: Testing in the Mozilla Ecosystem
- Insulating against failure using Caching Reverse Proxies just seems like a good idea.
- Web devs optimistic over IE10 conditionals drop seems to be something we-who-deal-with-browsers-and-their-quirks-for-a-living need to be aware of
- In a weird bit of timing A Selenium and Python appetizer came out mere hours after Getting Started With Selenium WebDriver on Ubuntu/Debian. For some reason, this quote comes to mind. 🙂
A Smattering of Selenium #53
Well, since the last Smattering there hasn’t been much in the community. Oh. Well, except for hitting the 2.0.0 milestone. Which seems like a good time to remind people that:
- Selenium is the project name
- Selenium 1 is a project version
- Selenium 2 is a project version
- Selenium Remote Control (RC) is an API name
- Selenium WebDriver is an API name
- A person upgrades from Selenium 1 to Selenium 2
- A person migrates from RC to WebDriver
And with that soap boxing, here are some links for your consumption.
- Run Cucumber with Selenium RC and a custom Firefox profile actually is using WebDriver not RC, but shows a valuable trick regardless.
- I’ve linked to these slides before, but this is a very important talk by Kent Beck on the sort of business changes that need to happen in order to enable Continuous Delivery.
- Pipelining the build for fun and profit is a bit of a product showcase, but splitting the build like this is cool.
- Testing Asp.Net pages has a technique for overcoming one of the difficulties of testing ASP pages
- Taking Browser Screenshots With No Display (Selenium/Xvfb) is a follow-up to his previous post. And is starting to get into weird voodoo; let’s take an image of something that is virtual
- Selenium WebDriver + Linux (Headless) + Ruby + Jenkins == Awesome is the Ruby version of the above
- WebDriver as a standard? Sure. Why not? [DRAFT] Charter: Browser Testing and Tools Working Group
- Everything You Never Wanted To Know About DLLs is not automation related, but more about understanding how your tools are built. And waaaaay off the geek deep end.
- The Sad State of Symbol Aliases from the same blog is just about the only thing that could top it
- pdf.js reached its first milestone – I don’t know why exactly, but this strikes me as having huge potential for automation.
- Selenium with SpecFlow has a few notes on using Selenium in SpecFlow scenarios and step definitions
- mouseOver events in Selenium and jQuery hover provides a warning around JQuery’s hover binding.
- Announcing TestNG 6.1 with a bunch of goodies. Well, if you like Java… 🙂
- Missed EuroPython 2011? Here are links to torrents of the talks
Selenium 2.0: Out Now!
We are very, very pleased to announce the release of Selenium 2.0. If you’ve been waiting for a stable release since 1.0.3, now’s the chance to update. And if you do, what will you find?
For users of Selenium 1, this is a drop-in replacement. You’ll find support for modern browsers such as Firefox 5 and IE 9, as well as a wealth of bug fixes and stability improvements. That’s one reason to update, but what other reasons are there?
The big feature of this release — and the reason for the new version number — are the new WebDriver APIs for Python, Ruby, Java and C#. These have been in development for over four years, and are already widely used, trusted and depended on. The WebDriver APIs have been written by developers familiar with each language, so they feel like they belong there. We’re very proud of them, and hope you enjoy using them.
Support for WebDriver is also baked into Opera and Chrome, and we’re working closely with Mozilla to ensure that their browsers also support it. Looking to the future, WebDriver also works on both Android and iPhone, allowing you to test your sites on the next wave of the Web.
As well as support by the browser vendors, WebDriver also provides excellent emulation of user inputs using something we call “native events”. Normal browser automation frameworks, including older versions of Selenium, simulate user interactions via the Javascript engine of the browser. This approach is error prone as each browser has its own quirks. “Native events” are fired at the OS level instead, avoiding a large amount of browser-specific complexity.
Advanced Selenium users will be pleased to hear that the standalone selenium server also includes support for distributed testing via Selenium Grid. This new Grid implementation supports testing using both the original Selenium API and WebDriver, and has been developed as a collaboration between the current Grid maintainer and an engineer from eBay.
We’re working hard to ensure that Selenium IDE also supports all these new features and APIs. IDE version 1.1.0 should be released next week, with support for exporting to the four main languages supported by WebDriver. Please keep an eye on this blog for announcements! There will also be follow up posts, exploring and explaining each of the new features, and providing you with more information.
Of course, Selenium 2.0 is a major milestone, but we’re not done yet. This release marks the point where we expect our APIs to change very little from now on and where we believe it’s a solid release. Like all software, it has niggles and bugs, and we’ll be focusing on addressing these as your feedback comes in.
As a personal note, I’d like to say thank you to each of the many people that have worked so hard to make this the best Selenium version yet. Not only the developers but also the team working on making our documentation clear and easy to read, everyone who’s taken the time to report bugs, and also to you; our users and community. The project is great fun to work on, and you’re the reason for that. Thank you!
New ChromeDriver
The ChromeDriver is composed of two major pieces. There are the client APIs, which you use in your tests, and there’s a server part, which the client APIs know how to start and run and which takes the form of an executable called “chromedriver”. The server piece is maintained by the Chromium team, and they’ve just released a new version, with support for Chrome 14 and with bug fixes. If you’re using Selenium 2.0rc3 and you’re also using the ChromeDriver, head over to the Chromium project’s download page for the latest and greatest!
Selenium IDE 1.0.12 – now with Firefox 5 support
Last week we quietly released Selenium IDE 1.0.12 on the website. It has Firefox 5 support along with other improvements. See the release notes and unofficial announcement. Download it here or ask Firefox to check for plugins updates.
And for those who did not download 1.0.11 (it was not pushed through the update system) you will want to read about the formatter change that landed.
A Smattering of Selenium #52
Welcome to the Canada Day edition of the less-than-weekly-now collection of Selenium / Automation links that is the Smattering of Selenium.
- Selenium Advanced User Interactions illustrates how this new API (which is part of WebDriver) can use used to do things like drag-and-drop on Canvas elements.
- Things you (probably) didn’t know about xargs is one of those things to keep tucked away in your toolbox. Especially if you find yourself having to shell out in your scripts.
- Sapphire is yet another Ruby framework. Yet again aiming at non-technical resources. Though I am sure he meant ‘people’.
- Se-IDE 1.0.12 has been available on the website for a bit and is being pushed out to everyone this weekend. Samit has a summary of the changes
- Automated Testing of RichFaces Components with Selenium is a nice Maven example including how to deal with complex AJAX calls
- The Tests are Broken, Now What? explains a method in the C# world of dealing with flaky scripts
- A Python Decorator to Mark Nose Tests as Work in Progress
- Advice on starting browser-based automation is a pretty decent list — even if it does need to breaks between points.
- JavaScript alerts in Selenium 2, webdriver and capybara”> looks like it was good before, and better with the help of some feedback
- Headless Selenium WebDriver Tests using PyVirtualDisplay
- Python – Selenium WebDriver – Capture Screenshot
- Inspecting XPath Expressions and CSS Selectors using Firefox/Chrome via Firebug or the console
- Selenium IDE Plug-in for InfoStretch Framework includes a formatter for their tool as well as a bunch of other extensions.
- The ClasspathSuite modifies how JUnit 4 finds what scripts it will run.
- Selenium-Specs is an Se-IDE formatter for Scala / Spec2
- Acceptance testing a CherryPy application with Robot Framework (and Selenium)
- I’m starting to think that Selenium needs a curated Recipe site; The Makings of a Great Python Cookbook Recipe is an example of what I think we need
- Selenium 2 Chrome Switches via ChromeDriver for all your toggle-ing needs
- Test Maintenance; Or, The Third Era of Programmer Testing postulates that script maintenance is on the verge of an evolution
Selenium 2.0rc3: The “Next One’s The Big One” Release
When we pushed the 2.0rc1 live, we really hoped that the next release would be 2.0 final. We very quickly got some feedback that encouraged us to push a 2.0rc2. Now, after just under three weeks, we’re launching a third and final release candidate. You can download it from the Selenium HQ site or directly from Google Code.
We think we’ve addressed many of the common issues, added some polish and added a host of bug fixes and minor changes, and we hope to hear your feedback! The following headline changes have been made in Selenium 2rc3:
- The deprecated RenderedWebElement interface has now been removed. Most of the functionality has been moved to either WebElement or to the Actions class.
- The deprecated WebElement.getValue() method has been removed. Use WebElement.getAttribute(“value”) instead.
- After some debate in the team, “WebElement.setSelected” and “WebElement.toggle” have been deprecated. They will be removed in the final release.
- Thanks to the hard work of Mozilla engineers, we now offer Firefox 5 support.
- The Opera driver, developed by the lovely chaps at Opera Software, is bundled with this release.
- Improvements in the way that mouse interactions are simulated, particularly when elements are outside the visible area of the page.
As with almost all releases, there are still some issues left to resolve, but we’re working hard to make Selenium 2.0 as good as it can be.
A Smattering of Selenium #51
Two big releases last week…
- Selenium IDE 1.0.11 was released — with Firefox 4 support. Finally. And just in time for people to start agitating for Firefox 5 support. official announcement, unofficial announcement
- Selenium 2 RC1 (and RC2) were released which marks the first official release of the new in-server grid behaviour. Even if you are not using the WebDriver API or grid functionality, you should be updating your environment to this. official announcement
And the rest.
Python’s super() considered super! begins with If you aren’t wowed by Python’s super() builtin, chances are you don’t really know what it is capable of doing or how to use it effectively. and goes from there.
Want to know what the top 100 issues that have been logged for Se according to the number of stars that have been given them? Click here and wonder no more
[Successful] automation is code, so Why Code Readability Matters is important. Especially since a large body of people writing automation would not consider themselves programmers so missed a large part of the implicit learnings that comes with it.
Tech Talk: Michael Deerkoski (Flickr) — “Continuous Deployment at Flickr” from Talks at LinkedIn on Vimeo.
The State of Ruby and Testing has graphs and such around some survey results around testing in the Ruby community. What is it with Ruby and their love of testing frameworks? 🙂
The future of testing Se-IDE lies with Mozmill. If you are interested in knowing how to run its own tests see Running the Selenium IDE Mozmill tests — and then start to add your own.
What is the most under-used part of Se you ask? Rollups! Which could be thought of as macros and an example can be found here. Rollups btw, will be moved into an Se-IDE plugin at some point.
How can I learn to automate my testing using Selenium? is designed to be Google link-bait and I can’t help but think that is a good thing. I would probably have switched Step 4 at the bottom to be ‘Create Page Objects with the help of the generated code’ or something like that. It’s not really a ‘Best Practice’ to take the raw generated code and run it anymore — if it ever really was.
When most people think of “the browser’s cache” they envision a single map of HTTP requests to HTTP responses on disk (and perhaps partially in memory) from Chrome’s 10 Caches shatters another idea I held. Sigh.
Hey, where’s my unashamedly ugly wait asks the question, then answers it. Sorta. Of course, the answer is in Java so is still ugly…
So does Se have a story around Symbian? Asked due to Top Smartphone Platforms in Europe
The depth and breadth of Python ends with Maybe I should just cancel all weekly meetings and sign off from all mailing lists and focus on two things: meeting Python users and coding. — more people should do this I think. Well, at least the first part.
From a SeConf2011 Lightning Talk is the Annotated Smattering of Selenium Tips
Integrating JUnit tests with HP/Mercury Quality Center – part one, part two
The Apple Testing Problem raises a good point (from Gartner! I know!) — of course, they don’t talk about the cause, which is Apple’s lack of participation in the outside world. It would be great if they would help with the automation driver for their core browser tech, but so would a lot of things that don’t seem to be likely.
I usually don’t link to my own stuff here, but I did a webinar for PustToTest last week and the video of it is now online. (Webinars are weird.)
Selenium 2.0rc2: The Better Working Release
You win some and you lose some. We’d been really pleased to get Selenium 2.0rc1 out, so we were pretty disappointed to hear that some of you were running into problems with the Java version of the IE driver not launching IE sometimes. That’s definitely not good, so we fixed the problems and have released Selenium 2.0rc2. It’s the same as rc1, but with fewer problems 🙂
We’re still very keen to hear your feedback! Let us know what you think!
Selenium 2.0rc1: The Grid Release
We’re very happy to announce the first Release Candidate for Selenium 2, available for Java, C#, Ruby and Python. The API has been stabilised and the functionality needed for the final 2.0 release is mostly in. We’re going to be working hard to get there as soon as possible, but now’s the perfect time to test the waters and provide us with any feedback you may have! Grab the downloads from the site!
Highlights:
- Grid 2: A major feature of this release is Grid 2, an implementation of the Selenium Grid that supports WebDriver’s wire protocol, allowing tests using Selenium WebDriver to be distributed through it. There are some docs to help you get started on the wiki.
- New ChromeDriver: Following a complete rewrite of the ChromeDriver, Selenium 2 is now supported natively by the Chrome browser itself. In order to use this, you must download the chromedriver executable from the Selenium project site.
- OperaDriver support: We’ve bundled the most excellent OperaDriver into the release to make it easy to get started testing with Opera.
- Support for native events in Firefox 4.
- Advanced User Interactions: An API that allows you to model complex user interactions, such as clicking on an element, holding the shift key, clicking on three more, and then dragging the four elements to a final destination. The entry point to this API is the Actions class.
We’ve also deleted all methods that were deprecated in 2.0b3 and have marked a number of methods and classes (notably RenderedWebElement and WebElement.getValue) deprecated. These will be deleted in the next release.
Known issues:
- Native events on Linux may not work properly on tests that include alerts and prompts.
- Mouse actions using the Advanced User Interactions API may not work properly for elements that have to be scrolled into view.
We plan on making our releases more frequent in the run up to 2.0final and polish off the bugs and issues. Stay tuned! This is going to be fun 🙂
Selenium IDE 1.0.11 – Now with Firefox 4 Support!
We know that you have been waiting eagerly for this release and you have to wait no more. Selenium IDE 1.0.11 is now here and you can get it from the seleniumhq download site. The update will also be pushed to you automatically over the next couple days.
Other things of note around this release
•Release Notes
•Where to log bugs
•Welcome Selenium IDE 1.0.11 (with Firefox 4 support)
A Smattering of Selenium #50
Half a century!
And because I am late doing this, the Selenium Test Day for Addons.Mozilla.org — which is today! gets top billing. Its actually going on Right Now. Looking to practice script writing and/or up your profile? This is a great way.
And now for the usual stuff.
- .NET Headless browser options looks at various options that might be available to you if you want something like HTMLUnit but for .NET.
- CSS vs. XPath is one of the great talking points in the Se community. And until now there hasn’t been any hard information to support the claims. Why CSS Locators are the way to go vs XPath now solves that problem.
- Heuristics For Creating Automated Regression Tests as recorded from a IWST session late last year
- Functional Testing with Selenium WebDriver and Scala. Don’t think I’ve ever actually seen that language before.
- Here is a useful StackOverflow question – How to add a JUnit 4 test that doesn’t extend from TestCase to a TestSuite?
- ‘Pushing the boundaries of User Experience Test Automation’ slides from the STEP-AUTO conference. Not that useful without Julian in front of them, but check out slide 17
- The Current State of Jenkins deck is interesting, but slide 9 specifically is what the Se community could learn from.
- Need to add automation hooks? Have a look at the data- attributes. Why, oh why don’t I use these more?
- People should write more spelunking post like Spelunking Selenium in Search of Sockets
- I’m doing a webinar for PushToTest on Thursday. Haven’t done one of those before…
- A Continuous Delivery video from the London Test Gathering — I really wish I had time to watch videos these days.
- If you are using Python’s unittest module, then PyJUnitXML is going to help prevent you from re-re-rewriting the ‘ant junit xml’ format
- Traits is a bit of a type system for Python. I think.
- Not that I use any of these, but this seems like a nice tutorial on JBehave, Spring MVC and WebDriver
- Looking for Snake Oil? I present to you Snake Oil
- twin looks rather cool. Now all it needs is the same language support as WebDriver and we might have a tight way to deal with the desktop and browser
- So who is going to add a link to Logging Selenium 2 Events in Twist or similar to the Se Documentation?
- The page object gem could help with adoption of this pattern. Or could hopelessly confuse the pattern with the gem’s implementation of the pattern. Based on past experience, my money is on the latter.
- The Architecture of Open Source book has been released and includes a chapter on Selenium by Simon Stewart. Buy it from this link, not Amazon — all royalties are going to Amnesty International and Amazon takes a huge slice
A Smattering of Selenium #49
Here is the next 10 links as I play catch-up.
- First up is the Selenium Conf videos. There are only seven up currently, but as they are processed they will be posted
- Silicon Valley Continuous Integration Summit, April 7, 2011
- Virtual Hudson Build Environments – Part One, Part Two
- The second last paragraph of So you think you know automation? Part One is extremely important if you re doing automation. Which you likely are if you are reading this.
- Regression testing Reddit with Selenium Webdriver ruby bindings and Rspec is nice in that it uses a public site, with known behaviour and illustrates how to do stuff beyond just the classic Google search. There is a link to the code and to a video of the execution as well.
- As I mentioned in my ‘OMG I just had a complete energy crash’ talk at Selenium Conf, Se-IDE is starting to have a suite of Mozmills scripts thanks to Dave Hunt
- The watir-webdriver-performance gem seems pretty neat. We really need to figure out how how to some sort of compatibility worked out (or at least documented if it exists) between the things that build off of ‘selenium’ and those that use ‘watir’ — since they use the same backend these days anyways.
- Load testing GWT applications with Selenium 2 and Gradle ‘shows how to do a load test on a GWT application that runs in production mode’
- I get a niggling feeling there has to be a better way to Extending Selenium 2.0 / WebDriver to support Ajax but..
- Divide and Concur explains how Etsy chunk their Selenium scripts
A Smattering of Selenium #48
It’s catch-up time again! Here is the first 10.
- Automated tests for HTML5 offline web applications with Capybara and Selenium shows how a custom Firefox profile lets you automate Offline capabilities of HTML5 apps
- Robot Framework’s SeleniumLibrary 2.7 has been released primarily to pick up 2.0b3 of the Selenium Server.
- There was a series of posts about using Selenium with Drupal recently.
- Using XPath Axes for locating elements in Selenium discusses some of the more advanced ways of finding elements via XPath
- I’ll follow that up with a link to the cssify project which will attempt to automatically convert XPath locators to CSS
- And since we’re now onto CSS… CSS Stress Testing and Performance Profiling discusses the stress-css bookmarklet. Which you can integrate into your Se scripts using a trick I discuss here
- VMTH (Virtual Machine Test Harness) seems like another thing to put into the automated deployment toolkit
- GTAC 2011 has been announced — seems to be moving away from the hard-core automation geekery that it was when it started.
- WatirGrid can haz Selenium if you want a different model of browser distribution and are using Ruby. Naturally, Gridinit also supports both now
- If you are using Jenkins, Video recording, slides of “Securing Jenkins” webinar could be useful viewing
A Smattering of Selenium #47
Nothing says ‘Hello Monday!’ like a batch of links and a wife with a kidney stone.
- Eradicating Non-Determinism in Tests is a nice essay by Martin Fowler and applies to Se as Left uncontrolled, non-deterministic tests can completely destroy the value of an automated regression suite.
Reminds us to disable automated updates on your remote machines.- Selenium Simple Automation Infrastructure is a framework built on top of Selenium using Python to make writing scalable, data driven, functional web tests easier with code.
- Lightsaber IDE is a A rite of passage – build your own tools just like the Jedi’s of The Old Republic is all sorts of win. Build your own tools!
- JUnit in a page
- Configuring the local validator with Eclipse is pretty useful if you use BrowserMob (and don’t have a hate-on for all things Eclipse)
- Internet Explorer 10 – 10? WTF? Didn’t 9 just come out?
- How to Lose Races and Win at Selenium has a great trick to reduce duplicate code when creating custom synchronization functions. (Good job Joe!)
- Not that there is such a thing as a ‘Best Practice’, but RSpec Best Practices is full of useful Best Practices.
Selenium – The Most Interesting Scripts In The World- If you are scripting in Ruby, then the Practicing Ruby Ruby blog looks really good.
- While written for the Entrepeneur-set The Entrepreneur vs. The Strategy Consultant but could also apply to how one approaches automation.
- tddium takes the pain out of running Selenium testing in cloud.
- Jason Huggins was the guest on FLOSS Weekly last week.
- Not that using Excel as your data driver is a good idea, but if you did that with Java then Data-driven tests with JUnit 4 and Excel is going to be useful.
- Using Selenium to validate XHTML markup using lettuce is a cool trick to validate your HTML per W3C’s definition of good.
A Smattering of Selenium #46
Let’s put Selenium IDE on Firefox 4 is Available for Testing! Now! outside of the normal list. We have a ‘working’ version of Se-IDE for FF4, but don’t really have too too much faith in it (or at least I don’t). Please help test it.
- Eight Techniques to Improve Your Tests is focused on unit tests, but I’m sure something can be gained from them
- Runners are great fun. How the play framework test runner works is therefor also great fun.
- Manage your EC2 instances in your Grid with rubber; a plugin for capistrano
- Some post SeConf blogs are starting to appear
- Michael Larsen’s Day One, Day Two, Day Three
- Andy Tinkham mindmapped it
- While not related directly to automation The writing process mimics the script creation process; at least for me.
- AffirmIt! is an April Fool’s joke (I think!) but still good anyways.
- Selenium Fury is a Page Object factory for Ruby.
- It is always important to remember the Bugs that automated tests aren’t good at finding
- Care about using Twist with either the Android or IOS WebDriver APIs? Configuring Twist for Selenium 2 could make you happy then.
- Logs Are Streams, Not Files is an interesting notion to remember.
- All the talks from CukeUp! are online. Because I need to have even more things to not to have time to watch.
- Selenium Commands & Locators Explained is the next in Dave Hunt’s guest series at the Software Testing Club. Pay extra attention to the last sentence of the Link section
- Spynner is a stateful programmatic web browser module for Python with Javascript/AJAX support based upon the QtWebKit framework
- Bring out your dead! applies just as much to Selenium as it does Python.
- No idea how I found design of selenium tests for asp net seems pretty useful. Or at least from the table of contents.
- The Java technology zone technical podcast series has a pretty current podcast with Jason Huggins and Simon Stewart that deals with upgrades, etc.
- XPath, CSS, DOM and Selenium: The Rosetta Stone — given we spent all week last week harping on using CSS instead of XPath, this is a win.
- An excellent reminder that it is not always just the raw number that you need to understand, but the story of the number can be found in Why you can’t compare cross browser execution times of Selenium Tests
A Smattering of Selenium #45
A Smattering of Selenium #45
So of course by now everyone has seen Selenium 2.0b3: The Next Gen Browser Release and upgraded their rigs. Expect Selenium IDE at some point in the next week with support for FF4 — if you just. can’t. wait. then you could try the bleeding edge for yourself. Logging any bugs you find; of course.
Oh, and there is the whole Selenium Conference next week.
But aside from that, here are the things I have collected.
- headless dotnet browser testing with selenium2 using Jenkins and NSSM (the Non-Sucking Service Manager)
- Frameworks are evil includes this gem: The problem comes when you are blindly following what a framework gives you and you forget your better design skills (like OO or functional skills) to just follow blindly recipes from a given framework.. Exactly.
- Testing jQuery Autocomplete using Capybara or more accurately Using Selenium + Capybara + jQuery to select an option from an AutoComplete
- If you are wrapping your scripts in Cucumber or RobotFramework (or similar), then you owe it to your team to read Putting Cucumber where it’s not supposed to go will hurt!. Especially the 4th adn 5th paragraphs.
- Not new, but FEST appears to open up the Applet space to Se. Not that Applets are really in use much these days. I could have used this in 2007 though.
- Alfajor seems to be a python based metaframework supporting Windmill, WebDriver and a few others.
- Crawljax is an AJAX capable web crawler
- Wait with WaitForCondition discusses some advanced synchronization tricks
- Capybara (and Selenium) with RSpec & Rails 3: quick tutorial is a quick tutorial
- lettuce_webdriver is, naturally, the Python port of Cucumber
- An Update on Our Selenium-Automated AMO Tests (and Automation in General) — AMO is addons.mozilla.org for the acronym impaired.
- A website appears before you! Adventures of a clicky thing is not Se, but still interesting.
- Desafios com o Selenium IDE is in Portuguese, but from what I understand he is trying to build a koans style site for Se-IDE.
- From PyCon is API Design anti-patterns and API Design: Lessons Learned
- Exceptional Ruby Notes has some links to how ruby actually handles exceptions
- Parallelism is not concurrency — in case you were wondering
- Se committer and IE WebDriver re-writer Jim Evans was on Hanselminutes
- Vision Test for ZTL shows how they do image comparison.
- and do does github!
- Selenium Test Day with Mozilla WebQA is TOMORROW – join in to learn / share some tricks with Mozilla
- An Introduction To Selenium IDE is the first in a series of articles that I might not normally link to but I read drafts of and know where they are heading. Either that or I am completely confused
- Step Away from the Tools is an important reminder for those who tend to live in their tools.
- Selenium IDE plugin for the Play! framework
- How the Comodo certificate fraud calls CA trust into question is interesting in itself, but also has a nice explanation of how SSL works. Again, if you are not using certificate-based authentication in your scripts, you do not need SSL turned on outside of production, but should you persist then you should understand what is happening.
- Without stabilisers – why writing your own test harnesses really is an option is another argument for writing your own harness. Yes, you should do this. (Or at least customize the heck out of an existing one)
Selenium 2.0b3: The Next Gen Browser Release
It’s been about 5 weeks since the release of beta 2, so we’re very pleased to announce that Selenium 2.0b3 has just been released simultaneously for Java, .Net, Ruby and Python. You can download it from Selenium HQ or from the Google Code site. This release focused on providing excellent support for the next generation of browsers, particularly IE 9 and Firefox 4, and we think you’ll like what you’ll find.
- Restructured documentation at Selenium HQ
- An improved user interaction API
- Including experimental IME support on Windows.
- Alerts and prompts handling for IE.
- Marked the following APIs as obsolete in .Net:
- IRenderedWebElement.Hover()
- IOptions.Speed
- Even more improvements to the Java webdriver-backed selenium
- We’ll document the migration path before 2.0b4 is out!
- A significantly faster Android Driver
As well as these changes, there’s also the regular clutch of bug fixes and tweaks. For the number crunchers, there were a total of 331 changes that landed in the 5 weeks since the last release, with the 5 most active contributors working on each of the different languages supported by Selenium.
In addition to the enormous thanks that go to the developers, I’d like to add a big thank you to the Mozilla engineers who chipped in on the IRC channel at the last minute to help us work through some issues with Core. We’d not have been able to get this release out when we did without their help. Thank you Mozilla!
The next release will be focused on stabilization work, reducing our bug count and adding support for Grid 2.0.
A Smattering of Selenium #44
What started out as the week of Capybara rounded itself out fairly nicely
I’m not a fan of using 3rd party abstraction layers (1st party are full win though) but Capybara has a large marketshare so Capybara (and Selenium) with RSpec & Rails 3: quick tutorial is likely going to be of interest to people.
And while on the subject of Capybara, here is a post on Checking Invisible Elements in it.
Keeping with the Capybara theme, we have Configuring User Agents with Capybara + Selenium Webdriver
Unit tests are overrated is a nice reminder to change all the tests in a system for a change — not just the unit ones. (C’mon, how many of us haven’t been burned and/or responsible for this.)
People-driven Test Automation includes this nice blurb
Successful test automation uses good tests that provide clear test results. A pass or no-pass result must be confident and trustworthy. By focusing on what the system should do rather than how it does it, this can be achieved easily and without breaking existing test cases whenever the logic of the system is changed.
Automate Kingdoms Camelot using Selenium reminds me of the days when I had the MUD we played in fully scripted.
How to include dynaTrace in your Selenium Tests is an interesting idea. Would be even better using Page Objects that were controlled externally so you don’t have to modify working scripts to enable/disable timings. But that’s an exercise for the reader to do. (Oh, and if their marketing firm wasn’t tweeting about it every day, that would be keen too.)
#SFSE Video: Selenium Problem Solving Sessions has, amung other things, a demo of the dynaTrace thing.
User-Extensions With Selenium RC Using Ruby Client Driver (selenium-client) is slightly out of date (use selenium-webdriver, not selenium-client) but aside from that, has an important missing bit of the user-extension documentation — how to use them from inside a script.
I haven’t watched it, but From Continuous Integration to DevOps: Co-Evolution of Agile and Automation seems interesting. I actually used the phrase “Selenium is the gateway drug to DevOps” the other week.
Jenkins, RVM, and Selenium is really about Cucumber, but…
Setting up Selenium server on a headless Jenkins CI build machine is similar to the 8th light one, but for Selenese
Selenium 2 with Firebug run on FF shows how to add an extension to a WebDriver profile. Now to write a script for all these plugins
Building Custom Test Frameworks is a bit of a cautionary tale
The whole where-is-this-binary-hiding-on-this-machine-problem on windows has bit people a number of times, Test Automation: Checking for Bit-ness suggests a solution (in C#)
Functional Tests with Selenium 2.0 and cargo-maven-plugin updates some common documentation around launching the Se server and tests from inside Maven
A Smattering of Selenium #43
- The big thing in the new last week was ColdFusion. Yes, ColdFusion. I was amazed how much mention it got on Twitter.
- SeleniumCamp happened over the weekend and from the looks of things was a success. And had almost an even number of women as men — which is almost unheard of at these sorts of things. David Burns posted his thoughts on it and slide decks are starting to make it online now; search for #seleniumcamp for the ones I have missed.
- BDD approach with Selenium RC
- Flex Selenium RC
- Testing RIA with Selenium
- Selenium RC for QA Engineer
- Selenium RC Python
- Full Scale Automation Using Selenium
- Story Testing Approach for Enterprise Applications using Selenium Framework
- Selenium + Wiki = Executable Specification
- DSL, Page Object and Selenium – a way to reliable functional tests
- Selenium 2: The Future of Selenium is now!
- more photos
- A cool trick to get coverage number if you are using IIS is shown in Code Coverage of ASP.NET Applications On IIS — so how does one do similar for other web stacks?
- Adding a [URL] attribute to the [Browser] attribute for xUnit.net is a post I’m having a hard time summarizing, but seems pretty cool.
- UI testing your EPiServer site with Selenium and SpecFlow is another how-to post.
- Amount of profanity in git commit messages per programming language is just fun.
A Smattering of Selenium #42
Is this week’s post the Answer to the Ultimate Question of Life, the Universe, and Everything Selenium?
- Selenium 2 – Get Number of Rows in a Table illustrates what is advertised, though it feels like there has to be a shorter way to do this along the lines of getXpathCount() or getCssCount()
- Atlassian Plugin SDK – how to provide optional selenium tests explains how to wire up Se with the Atlassian toolkit and has a couple task specific tips as well.
- Automated Test for Facebook Canvas Apps – Front-end automation with Selenium is very buzzword compliant: Selenium-WebDriver, Facebook, Canvas. All it needs is to run on a mobile device.
- Sauce Labs have released Se-Builder which is their interpretation of what a next generation record/playback tool might look like.
- I’m sure I had to know about this already, but Jenkins: The Definitive Guide is an open-source book on everyone’s favourite politically embroiled CI server. Speaking of politics, here is an interesting graph.
- Measure Anything, Measure Everything seems pretty cool. Suspect you could do something in your scripts to ping the counter so you could get visualizations of your runs.
- Se-IDE Natural Language Extension is very cool. Now, if only they had gone the extra step to make it a plugin
- Pushing the Boundaries of Test Automation is useful if you too are pushing boundaries — and most people are at least once per application
- Lift Testing has an example of writing Se scripts using ScalaTest. Think that is the first time I’ve seen that.
- Custom C# formatter for Selenium details a bit of the journey and links to a formatter that uses Fluent Assertions.
- The Case for “Longevity/Endurance” (Session-Based Testing) in Selenium partially rebuts the single, small, Se script idea. Or at least provides a counter example.
- I hack runners for fun, so A Unit Testing Framework In 44 Lines Of Ruby has all sorts of geek appeal.
- Hacking Selenium to improve its performance on IE has, well, hacks to improve Se time on IE. These are Se-RC specific, but came up in an Se-WebDriver context.
- Automatiser les tests Selenium avec Maven took over the selenium twitter search for a day or so — which isn’t that interesting except that it is French. Seems there is an under-served market there. Oh, and Google Translate is horrible on pom.xml examples.
- JSHint is another of those things that would be fun to integrate into a Se run
Selenium 2.0b2 Released
We’ve just released Selenium 2.0b2. If you’re the impatient sort who loves to have the latest and greatest, head over to the download site and get it while it’s hot. If you’re a Python user, then all you need to do is a simple “pip install -U selenium”. Ruby users can, as ever, simply run “gem install selenium-webdriver”. Maven users need to wait just a little bit longer: we’re going to be checking the release in ASAP.
Between beta 1 and beta 2, we held a week-long Bug Bash, during which we closed a significant number of bugs. From a user’s perspective, other highlights include:
- A more stable, capable iPhone driver.
- Updated Android driver.
- Improved python bindings for Selenium WebDriver. The namespace is now “selenium.webdriver”
- Added “Selenium.getCssCount” to mirror “Selenium.getXpathCount”
- “WebElement.getText()” performs more consistently across different browsers.
- Mono users can use the .Net bindings
- Continued to improve the WebDriverBackedSelenium. If you’re looking to migrate from Selenium 1 to Selenium 2, and want to take your time, this is a useful stepping stone.
- Reworked the Advanced User Interactions APIs. The big change is that the WebDriver APIs no longer rely on classes from the AWT.
- .Net users now have more support classes, to make writing tests less tiresome.
- The remote webdriver makes better use of sockets, which improves stability and scalability on Windows.
- Started to add support for driving multiple IE instances. This is considered experimental, but we’d love to hear it’s working for you!
If you’re interested in the guts of Selenium 2 and how it worked, then you might find these interesting:
- Continued reworking the IE and iPhone drivers to use the Automation Atoms.
- Reworked the structure of the source tree to be more language focused.
- We have the skeleton of a webdriver-backed selenium for Python.
As you can see, this is a big release. Beta 3 should be out a lot more quickly, and will be focusing on improving support for IE 9 and Firefox 4. Over the course of the 2.0b3 development, we shall also be removing as many deprecated methods as possible, so be sure to remove deprecation warnings from your builds when using 2.0b2!
A Smattering of Selenium #41
There isn’t an official announcement anywhere (yet) but Selenium 2.0b2 was released a couple hours ago. Time to upgrade all your servers. Beta 3 is going to focus on IE9 and FF4 support.
Meanwhile…
- A Webinar on Automated Selenium Testing with Maestro 3 could be interesting if you are considering the Maestro platform.
- And sticking with the webinar idea, Sauce Labs is hosting Selenium 2 Webinar: The Next Generation of Web and Mobile Application Testing
- After a bit of stagnation, the official Python drivers are starting to get updated again.
- After almost a year, a new version of js-test-driver is out.
- Selenium Sushi is a support library / package for .NET
- Window Driver Pattern for Acceptance Tests illustrates Page Objects for PHP (though I don’t think it goes as far as it should in terms of abstractions).
- Aside from locators, the next biggest pain point is synchronization. Advanced Selenium Synchronization with ‘Latches’ is how I address that.
- Need an easy way to communicate Selenese steps on something like Stack Overflow? The Separated Values Formatter could be just the trick.
- Selenesse is a mash-up of Fitnesse and Selenium. If you are going to StarEast and want to learn it from one of the maintainers then Want to learn SeleNesse hands-on? is for you.
- Your automated acceptance tests needn’t be written in the same language as your system being tested explains a trap that too many teams fall into
OperaDriver Released
I think the word that I’m looking for is “wow”. Perhaps “Wow!” would express the concept a little more clearly. Perhaps “WOW!” would be even clearer. Yes, definitely. “WOW!” is a good way of describing this.
Before Christmas, Opera Software announced a pre-release of OperaWatir, an implementation of the Watir 2 API. What you may not know is that Watir 2 rests on the same WebDriver core as Selenium 2. Today, Opera made the source of the OperaDriver available on github: https://github.com/operasoftware/operadriver
This is “WOW!” It’s the first time a browser manufacturer has released their own implementation of the WebDriver APIs, and it shows how much Opera values test automation. Selenium 2 users now have an easy way to test that their sites work with Opera.
What are you waiting for? Go! Download! Test!
A Smattering of Selenium #40
You would think by now that I wouldn’t be surprised by the number of links I collect in a week.
- The big news last week is that we (Selenium) have successfully avoided the whole Hudson/Jenkins drama by joining the Software Freedom Conservancy.
- Speaking of Hudson/Jenkins, here is how to upgrade a Hudson install to Jenkinss
- I don’t like a lot of the messaging of the whole ‘Lean Startup’ scene, but they have some things to steal though. Is Deploying to Production 50x/Day a GOOD Idea? lists some
- Immune Systems
- Visibility of Changes
- Release is a Marketing Term
- Finding Usability Bugs with Automated Tests covers automation to discover Layout and Navigation accessibility and usability problems through automation
- Watir Day it the day before Selenium Conf; come hang out and learn about our Ruby sibling
- How to use javascript-xpath is one of those rare SO questions I stumble on that actually provides insight to a rare corner of the API
- The PHPUnit docs have been updated to include an example of a Data Provider that returns an Iterator object. This caused me a half day of pain so is getting a link. (Data Providers are awesome btw. Not just in PHPUnit, but in xUnit frameworks.)
- The first half of Regular Expressions and Pattern Matching with BrowserMob and Selenium is only going to be useful to you if you are a BrowserMob VU user, but the second half is interesting or very important depending on how crazy your site is to automate. If you are using XPath and not doing starts-with, ends-with or contains you are writing brittle locators.
- Starting Test Automation for a Legacy Project is a summary of a thread on the Agile Testing mailing list
- The demo code in DDD9 – Slides and thoughts has examples of using Page Objects for C#
- splinter seems to be one of the first projects to wrap around / build upon Se2
Selenium Joins the Software Freedom Conservancy
It doesn’t seem that long ago that we announced on the mailing list that the Selenium project planned to join the Software Freedom Conservancy. I’m very pleased to announce that as of Friday, 21st January, our application was approved. We’re now under the aegis of the SFC.
From most people’s perspective, this won’t make much difference: you’ll still be able to view the documentation and download the latest versions of Selenium from Selenium HQ. Development will continue to use Google Code’s code hosting and issue tracking. We are now, however, part of a formal non-profit organization, which means that a number of issues, such as how to handle revenues from adverts on our sites, become clearer and more transparent.
There are more details about what this means in the SFC’s announcement and their list of membership benefits. The bottom line is that this is a major milestone in Selenium’s growth and ensures that as we continue to grow our user base and introduce new features and projects, we’ll have strong support and backing from a well-respected Open Source organization.
A Smattering of Selenium #39
Hey look! All caught up — only took a month…
- My opinions on Continuous Deployment are pretty widely known, but the IMVU folks certainly have a lot of neat tricks to ‘borrow’. Such as Buildbot and Intermittent Tests
- Dealing with an API that returns XML? Your scripts don’t care about the readibility, but it helps you as the human if it is formatted pretty. xml formatter is a glorious time save in that case.
- Who would have predicted this… Perl stuff
- Modern Perl is a free Creative Commons book on Perl (with a dead-tree version also available)
- I had thought the Se-RC style bindings had been abandoned, but heard second hand, they are alive and well.
- Webdriver Remote Driver is the start of work on a Se2 driver. Now to get the two projects working together.
- And the reason for the Perl stuff is Hudson and Selenium
- Since Se is using Sizzle now for locators, comes a tip – never do things like $(‘form *’). This is crazy costly, because Sizzle works from right to left. Will grab all elems first.. Not sure of the accuracy, but it makes sense.
- Part of the debate when doing BDD and TDD is the overlap that [naturally] occurs; Duplication between BDD and Unit tests addresses it, partly be reframing the question.
- webkitdriver is a project that aims to provide a WebDriver implementation for a light-weight in memory Web Browser
- This week’s Selenium killer is PhantomJS
- Achievement parodies are always amusing; here is on for Visual Studio — what would the Selenium ones look like?
- Koans are a trendy way to learn / practice a language. Here is a Koan-a-copia of them
- Want onto the speaking circuit? The 2011 Verify/ATI Conference is asking for presentations
Bug Bash Aftermath
What a week! I’m almost (almost!) sorry that the Bug Bash is over. I’d like to say thank you to everyone involved in the Bug Bash, from those reporting issues, through those brave souls (Dharani, Anthony, Jari!) who went through the issue tracker, applied labels and made sure the issues were still fresh, all the way to those contributing fixes. And the top five bug fixers were?
- Jari Bakken (24 issues)
- Simon Stewart (21 issues)
- David Burns, aka: AutomatedTester (11 issues)
- Jim Evans (10 issues)
- Michael Tamm (6 issues)
Some interesting nuggets of information:
- We closed 85 issues over the course of the week (that’s about 20% of all open Selenium issues)
- There were 111 checkins last week alone
- All of the major languages supported by Selenium 2 are represented here.
- Jari Bakken needs to be bought a steak as big as his head.
What does this mean? It means that the next release of Selenium is set to be very solid. We’re going to be spending another week or so making sure that everything is stable after the influx of changes, but you can expect 2.0b2 to be out “real soon now”
If you missed the Bug Bash but still want to contribute, it’s never too late. Feel free to drop by the IRC channel, or checkout the source, find a bug and start building!
2.0b1 and Maven
If you’re using Maven and the 2.0b1 release of Selenium, you may be running into some problems getting maven to pick up your tests. The underlying problem is that selenium contains support classes for both JUnit and TestNG. The solution is to add this to your pom.xml
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium</artifactId>
<version>2.0b1</version>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
A Smattering of Selenium #38B
Will today be the day I finish three weeks of catch-up? Well, no..
UI Tests – putting it all together summarizes the series of posts using Watir and Cucumber, but the ideas could be converted to Se pretty easily.
I haven’t read it, but Essential Software Testdesign is now available for free [legitimately] as a pdf. Test Design is something I expect to see more discussion around in 2011 when it comes to Se automation. The rules really are different here.
Missed GTAC 2011 but want to be there vicariously? Now you can! GTAC #5: videos, slides, abstracts
Removing -htmlSuite from the Selenium Server and replacing it with a ‘real’ runner is something I’ve been thinking about recently after seeing [PROPOSAL] Webdriver Selenese HTML Runner. Who else has done this? Let’s see/share the code.
I was babbling on about Page Objects on Twitter and was sent a video on ‘BDD, ATDD and Page Object’. Haven’t had time to see it yet, but you might.
John Ferguson Smart from Mohinder Khosla on Vimeo.
Selenium Zoetrope is a PHP Se runner that will also record a video of your script’s run.
The Economist: Testing Drupal using Selenium is an experience report about the project that zoetrope originated in.
The elements of (cucumber) style is a nice ‘style guide’ you could consider adopting for your Cucumber scripts.
Another Selenium Auto Accept Self Signed SSL Certificates and Basic Authentication post, but this time with a Ruby bias for those who insist on having SSL turned on in environments other than production. (WHY?)
And from the same person, Testing PDF files with (and without) Selenium which is outstandingly cool. I know of at least one client who needed this a year ago.
A Smattering of Selenium #38A
No. Really. I’m almost caught up.
- Want input in a non-english language but don’t want to convert your whole machine? InputKing might be able to help. And the fact it is in a browser means we can use it via Se.
- HAR (HTTP Archive) is the format the cool kids are talking about, and now there is a har gem so you can make use of HAR files in you [Ruby] scripts.
- Organizing scripts by tagging them is one bandwagon I got on last year to great success and while I don’t really live in the MS toolset, Test Categories for MSTest is likely how how I would do it MSTest.
- Selenium won an award! Again! See the video of Se winning ‘Best Open Source Functional Automated Test Tool’
- How a script is named is a reflection of the person who wrote it, in Unit Test Naming Convention one such style is described and the reasoning explained. Just ignore the second half of the summary’s first sentence though.
- Michael Larson is Working his way though Selenium 1.0 Testing Tools Beginners Guide and documenting it in a series of blog posts he is calling a practicum
- Most people use Se to create a regression security blanked, but it there are some points to be discussed around the arrogance of regression testing
- ATDD continues to mature and the results of two different pattern workshops have now been posted. If you are using Cucumber, RobotFramework, Fitnesse, etc. you might want to pay attention.
- It always saddens me a bit when large threads pop up on how to manage Se scripts. It’s called version control kids. But I realize I’m an outlier on this.
- I suspect a lot of Se folks have a similar tale to How I Learned To Code
Bug Bash: 24-30 January
When the Selenium and WebDriver projects merged, all those moons ago, we moved the infrastructure from something we hosted to Google Code. One reason for doing this was to make it easier for people to file bugs and feature requests. And it looks like people have been filing a lot of bugs and feature requests.
In the run up for the 2.0b2 release, we’ll be running a Bug Bash. This will run from the 24th January all the way to the end of the 30th January. The aim will be to focus on clearing our bug list as much as possible, so that beta2 will be the best release of Selenium yet. We will, of course, be recognizing people who squash the most bugs here on the blog, and we’re hunting out goodies to mail to the top bug bashers once the week is over.
If you’d like to get involved, it’s easy:
- Check out the source code
- Find a bug you’d like to squash in the issue tracker
- Fix it, attaching your patch to the issue
That’s it. Easy! For help, and to ask questions of the core development team, please hop on to the IRC channel or email the selenium-developers group.
Update: The Bug Bash is now complete. All we have to do is count up the scores!
A Smattering of Selenium #37B
Let’s see how many announcements there were that didn’t get pushed out in a timely manner today shall we?
- Well, there is of course Selenium Conf is coming and you have until Friday to get your proposals in. Last I heard we had 37 which is impressive, but I think 50 should be doable.
- On the meetup side of things there is
- Boston on January 25
- NYC on January 26 (its not on the site yet, but I’m speaking, so trust me, it exists)
- London on March 23
- SeleniumCamp (English) is coming to Kiev at the end of February. Suddenly we go from no ‘events’ to lots.
- I’m kinda surprised no one has done this one yet, but a FitNesse Formatter plugin for Se-IDE is up on AMO
- Selenium Expert is a plugin that brings the wonderful world of inspections, tips, hints, fixes and refactoring to Selenese. Samit is a plug-in making machine.
- Gorilla Logic have have released a new version of FlexMonkium — with with fully synchronized versioning.
- SeleniuMspec is a cleverly named formatter for Mspec — though it isn’t distributed as an Se-IDE plugin (which would +1 its coolness)
- And I quote, Hewlett-Packard (HP) is announcing the discontinuance of HP WinRunner (WR) 7.5, 7.6, 8.0, 8.2, 9.2 (all editions) products.. Is it wrong to say something like ‘Ding, dong, the witch is dead’?. Of course, we wouldn’t likely be here without WR, but who doesn’t love some friendly-ish ribbing? Here is he full notice.
- Krypton appears to be a cloud service for managing your Se scripts and has a ‘we need testers’ box on their site if anyone is curious
- And to illustrate that this space seems to have potential, or people think it does at any rate, Test Runnr also does cloud based script management with the added feature of running scripts against the Sauce Labs OnDemand cloud. So if you have a cloud based app that you script with Selenium stored in the cloud and executed in the cloud are you yourself a meta-cloud company?
More tomorrow as we dig ourselves out of the hole.
A Smattering of Selenium #37A
My scheme for catching up with links last week ran afoul of 900 geeks and their families melting the internets at CodeMash 2.0.1.1. So let’s try it again this week.
- Capturing screenshots on script failure is a common trick and Capturing Web Page Screenshots with Selenium 2 is the first post I have seen that explains how to do with with Selenium WebDriver
- XPath marks the spot uses a treasure map analogy around how to create good XPath — but at the same time propagates the ‘XPath is Inherently Evil’ myth. I intentionally don’t link to myself nearly as much as I could, but think that my comment in the post is important.
- Unit Test Patterns: The Domain Test Values Class describes a pattern to provide values used in the testing of a domain in a way which improves understanding of test code by increasing readability and adding meaning to values.
- leakhelper is another of those tools that could be cool to integrate into your Se scripts. And if you do, don’t forget to document it and point it out to me…
- Missiles + Failed Builds = Bamboo Punisher — actually, its a crazy high level of awesome
- Software Testing Lightning Talks from IWST includes some on automation at the end — but lots of good non-automation ones as well
- Testing SmartGWT Applications with Selenium and Robot Framework is more Robot Framework goodness including Add some meaningful ID’s to your code — which is actually for SmartGWT but makes life so much easier
- The author of Selenium Simplified compares his book to Selenium 1.0 Testing Tools in So now you have a choice of Selenium Testing books and ebooks is a pretty fair and well-reasoned article. (Short version: buy both)
- We can’t go a couple months without someone rediscovering the joys of sending text to the browser. This time it is Functional testing with Selenium: issues with selenium.type, javascript events and keyPressNative but has the additional twist of including a solution in code and not just whinging.
- If you are a .NET developer, then Selenium Toolkit for .NET 0.84 Released might be of interest.
And assuming I remembered to pay the internet bill, there will be more links tomorrow.
Selenium Conf is coming… get your proposals in!
It has been mentioned at and hinted upon a couple times in the Smattering posts, but nothing has ‘officially’ been mentioned here, so it is time we fix that.
The first Selenium Conf is a go!
The logistics are set and we’re starting to sort out the program. Here is what you need to know. Right. Now.
- When – Monday, April 4 – Wednesday, April 6
- Where – Marines Memorial Club and Hotel
- Why – Its about darn time…
This is a community driven event, though our friends at Sauce Labs are doing a lot of the leg work on the facilities (and food!), as so we want the community to be at the front of the room and not just the usual folks that do the talking circuit. (Unless you really want me to talk all day — which I can as many can attest.) Because of this we have extended the talk submission to Friday, January 21, 2011 11:59 PM (Pacific Standard Time) to expand the both the number of proposals and the number of people proposing talks.
Have a vague notion that you would like to submit something but not sure what we are looking for? I offer these as guide posts to help your thinking:
- Technical over Theoretical – code will always trump handwaving around slides
- Experience Reports – On our project, we did X and it did or did not work and here is what we learned as a result
- No Sales Pitches! – We can get sales pitches at vendor driven conferences. If your talk’s proposal is accepted and then you deliver a thinly veiled sales pitch you should expect to have your mic turned off.
- Varied Experience – If your talk can appeal to newbies and people on the core team, that is a win in my books
So again, submit your talk – or risk hearing me all day.
Oh, and mark on your calendars Tuesday, February 1 — because we bumped at the proposal date so too is the ticket release date.
A Smattering of Selenium #36B
Second in a week-long series of catch-up posts. But before I get to the next batch of links, don’t forget to submit your proposals to speak at the first Selenium Conference. I’m pretty sure we’re going to be trying to pick out the talks next week.
- Can we please adopt this as the official poster for Selenium? Please?
- If you are a C# developer looking to get started with Selenium WebDriver, Automated Testing with Selenium 2 and NUnit seems like a good place to start
- Per the who ‘bringing order to the universe’, Watir-WebDriver: A detailed introduction shows how to drive Watir using Selenium WebDriver
- UI Automation: Tricks and Traps has, well, umm, tricks to try and traps to avoid. Shocking. I know.
- JUnit’s @Rule stuff is pretty serious magic, but really interesting. Here is Using Rules to Influence JUnit Test Execution and What JUnit Rules are Good For
- Some more information on how to use the Flash ExternalInterface is in Interaction with Flash using Selenium and Javascript – Part 2
- xvfb and cucumber collide in Running Cucumber Features Without a Display
- Use Lisp and want to use Selenium? Now you can with selenium-lisp-connector
- Looks like AutoIT3 might have some competition in the ‘drive native windows on Windows’ space with RAutomation. Here is how to Automating Windows and Their Controls With Ruby
- In what could be the best project name since ‘Vlad the Deployer’, Zombie.js is being touted as this week’s Selenium killer.
And now I’m off to drive through lake effect snow to get to CodeMash to stress out about my Selenium and Agile Testing workshops. Ah, the life of a consultant is certainly glamorous.
A Smattering of Selenium #36A
I have drastically fallen behind on the link reporting, but not the collecting, so this week’s Smattering will be multi-part.
The ‘big’ news falls for this edition is two fold –
- We’re having a conference! Selenium Conference 2011 is April 4 – 6, 2011 in San Francisco. See the site for more information. (And I think our friends at Watir are going to be in the same space the day before.)
- The Betas are here! The Beta’s are here! As Simon’s post announced, Selenium 2.0b1 has been released to the [unsuspecting] masses. Everyone, including Se-RC users are encouraged to switch their server over to it — its backwards compatible with 1.x and has a tonne of important fixes (like the HEAD request on open, -htmlSuite works again, etc.)
And not to downplay things, but here are the usual assortment of things I think are of interest/value to those automating stuff [with Selenium].
- Checklists are a Good Thing™ when it comes to testing, so why not automation too? So here is a Unit Test Review Checklist
- ExtJS is one of those things that seems to come up more often than not on the se-users list which makes me think I’m lucky that none of my clients use it. Testing Extjs Application With Selenium : Few Pointers seems like it would be useful in such an event though.
- Those of us around the automation space for awhile have often heard about Google’s mythic ‘Small, Medium, Large’ scheme for categorizing scripts — and now they are documented. Combining this idea with tagging of scripts and you’re laughing.
- Looks like IBM is now starting to care about Selenium in developerWorks with Automated web testing with Selenium which has an assortment of quick things to help people out. And it is IBM so it got lots of love from folks [bots?] on Twitter.
- Personas is something from the UX community that I’ve started to think more about in terms of what gets automated and/or how the the scripts are organized. The Persona Cheat Sheet will help you start down that road too.
- Testing Experience magazine recently had an Open Source issue which had some interesting articles. Doesn’t appear to be anything groundbreaking, but my definition of that might be a bit warped.
- Oooo! All of this year’s GTAC videos in one place. Now you really can pretend you were in India for the week.
- Go faster! Linking data generation to hotkeys is one of those posts that could be quite useful if you use automation to move quickly around a site so you can manually test it.
- Selenium IDE 1.0.10 is a ‘stable’ version (unlike 1.0.8 and 1.0.9 it seems) but did introduce one change to how element attributes are handled which I documented in Atoms have come to Selenium IDE
- Using Python’s unittest module? Consider upgrading to unittest2
Only 46 more links to go through… 🙂