A Smattering of Selenium #21
I thought it had been a slow week — until I looked at how many browser windows I had open. I wonder if that was why things were feeling a bit sluggish…
- First announcement of Selenium (outside of Thoughtworks)
- First announcement of WebDriver (again, outside of Thoughtworks)
- The ‘merger’ announcement (aka Selenium 2)
A great message I got from the screencasts is that your tests should tell a story. You compose that narrative in steps, so as to not trip yourself up. Many times you are probably required to develop against a backend service or directly with a database. So that’s how the story starts. Hello Mr. Database, are you there? May I put something in you?
The Current Status of Selenium 1 and Selenium 2
In the beginning there was Se1, and it was good. But it could have been better — in ways that WebDriver was starting to be good at. Thus the brilliant idea was hatched to merge the two projects.
And then the confusion began. Let’s see if I can start to address some of it via a ficticious conversation that consolidates the Se-user list and #selenium irc channel.
- There are a couple annoying bugs in Se-RC 1.03; when is the 1.0.4 release?
- Se-RC 1.0.4 is planned for sometime towards the end of July 2010
- I’ve heard rumours that 1.0.4 the to be the final release?
- Yes. 1.0.4 is planned on being the final 1.x release
- That’s crazy talk! I can’t use a .0 or ‘alpha’ release for my mission critical application
- Actually, its not all that crazy — and needs a bit more explanation. Se2 is truly a merger of the two projects, in fact 2.0a1 was literally the Se code from the OpenQA repository and the WebDriver code its Google Code repository merged into a new one. This meant that from the first release of the 2.x series, it has contained 100% of the 1.x code which means 100% backwards compatibility. Later releases in the 2.x series have been driven primarily by evolutions of the code that came from WebDriver, not from Se 1.x.
- OK, so 100% of Se 1.x is in 2.x; I get that. But how are you making sure that fixes to one get into the other?
- Here is another ‘secret’ — don’t tell anyone, but there hasn’t been any pure 1.x development since the merging of the codebases. Every 1.x release since the merger has really been a 2.x release — but all packaged up to make it look like a 1.x release. This is why observant people have noticed a log message that looks something like 11:09:37.507 INFO – v2.0 [a4], with Core v2.0 [a4] when they start up their 1.x server.
- So you’ve been releasing alpha code disguised as a stable release? Jerks!
- Woah! Relax! Recall what I said above about it being backwards compatible by default. The ‘alpha’ tag is there because the API for the new code is still being developed and features flushed out. The 1.x code is however, still stable and still production quality.
- Alright, I take back calling you folks jerks, but I really don’t like the alpha tag. When will it be out of ‘alpha’?
- There is only one or two more features to implement (like handling alerts) in the WebDriver code and some cleanup before the betas start. But hope for a 2.0.0 final by the end of the year. And while we’re on the topic of ‘alpha’ vs. ‘beta’, this the team’s working definitions of each.
- Alpha – APIs can, and likely will change. Possibly in dramatic ways.
- Beta – With the APIs set, make sure they work with the major browsers
- ‘Major Browsers’ eh, what exactly does that mean?
- Right now it means Firefox, Internet Explorer and at least one WebKit based one (Safari or Chrome)
In short… it is a requirement of Se2 that the server be backwards compatible with Se-RC 1.x and that has already been accomplished by building the code from a common source repository. This means that if you are using Se-RC, you can switch out the server for a 2.x one and have no impact on the execution of the scripts. Plus you can start to experiment with the new stuff that came over from WebDriver.
A Smattering of Selenium #20
12 hours late, but I was driving draft horses all day so that’s my excuse and I’m sticking with it. Enjoy. I’m going for a nap.
- The big news this week was the next alpha of Se 2 came out. Time to update those automation machines.
- Like TestNG’s @BeforeClass and @AfterClass but using JUnit4? Using JUnit Nested Suites with Selenium RC to simulate TestNG suite and grouping annotations is a long titled post, but describes how to fake one out to act like the other.
- Also on the topic of TestNG is the announcement of Selenium on TestNG
- The folks at ActiveState did a survey in their community about tooling and Selenium won
- I had to hack DNS a bit for a client’s Se setup to work the other week, but that seems pretty kludgey compared to Selenium Trick: Using a different DNS
- Using ExtJS? According to Testing ExtJS with Selenium Automating UI Tests the trick is to use CSS as your location strategy
- Jason Huggins was interviewed by Matt Heusser in Episode 3 of TWiST
- If you are doing Se, then you are doing code. If you are converting ‘classic’ manual testers to do automation you need to start thinking about Training Testers in how to code…
- While not directly related to Se, Practicing Continuous Integration on Flash Projects: Using Hudson is the wrapup post in a series on doing what it says. If you are doing CI, and of course everyone is, then it needs to be for all parts of your system
- ParkCalc automation – Keyword-driven tests in FitNesse wraps up the series by Markus Gärtner that has been mentioned the last two weeks as well.
- HOWTO: Test JQuery AJAX autocomplete menus with Selenium details something that is fairly common I think.