October 9, 2013
August 28, 2013
Although the WebDriver APIs started life as just a mechanism for automating web browsers, over the past few years it has been extended to also work on mobile devices. Projects such as Appium, iosdriver, and Selendroid have all shown that this approach works, and works well. On the Web, if you start using Selenium WebDriver with one browser (Firefox, for example), it’s easy to switch out the browser for another one (such as Internet Explorer or Chrome). It’d be nice to have a similar option for mobile, switching from one automation framework for Android to another.
As part of the Selenium 3 work, we have started working on a test suite to help ensure this level of interop between appium and iosdriver, and appium and selendroid. To kick start the process, the primary authors of each of those tools, as well as others including David Burns representing the Marionette project (Mozilla’s implementation of WebDriver for Firefox and Firefox OS) and Simon Stewart, the lead of the Selenium project, have spent the past two days locked in a small room in Mozilla HQ, London. They’ve taken this time to work out the areas where each of their projects didn’t align and agreed on a way to ensure a level of interoperability. There was only a minimal quantity of blood and tears, but plenty of hard work.
As we speak, work has started on a shared test suite, hosted in a repo in the selenium project’s Google Code page. Please, feel free to come along and join in!
While all this has been happening, the world has moved on, and now it’s time for the Selenium project to look to the future. It’s with great pleasure that I can now say that we’re working towards Selenium 3.
We aim for Selenium 3 to be “a tool for user-focused automation of mobile and web apps”.
What does this mean? For mobile users, the Selenium project will be hosting a suite of tests to facilitate interoperability between the many different projects available that are extending the WebDriver API to also cope with mobile. Developers from projects such as Appium, ios-driver and selendroid will be working on the suite of tests to enable this.
We’ll also be working on making the technology behind Selenium as stable and capable as possible. For this reason, Selenium 3 will see the removal of the original Selenium Core implementations, and consequently we’ll be deprecating the RC APIs too. The old versions will still be available as a separate download, but active development will cease, except for very urgent fixes. We will still be providing an implementation of the RC APIs backed by WebDriver, so you can continue running your existing tests, but now would be a great time to make the move to using the WebDriver APIs directly.
For those of you exporting your tests from IDE and running the HTML suites, we’ll provide an alternative runner that allows you to continue running those tests too, though it’ll be backed by the same “WebDriver-backed” RC implementation as offered by the main download. Again, the original implementation will be available as a download, but it will no longer be actively developed once we release 3.0.
Our current plan is to start shipping 3.0 by Christmas this year: it’s going to be a lot of fun!
August 18, 2013
Trying to find every excuse not to cut the grass … including apparently closing some browser tabs.
- Interoperability – Standardized Test Information Interchange has me so full of ‘meh’ as to be hilarious. Commercially driven standards rarely are and/or I am just too much of an open source person to accept this model for standards development
- Licensing in a Post Copyright World – important
- How to Make Async Requests in PHP is php specific in its solution, but has some interesting bits about socket establishment that applies to other ones as well
- Adding Comments to JSON feels like a hack. Buts a clever hack.
- Maven Release Plugin: The Final Nail in the Coffin takes great joy in removing part of the maven environment from their workflow. And really, who doesn’t?
- Open Sourcing a Python Project the Right Way is nice … though of course, as with everything else these days, it has some Github specific isms. You can do it the right way with hg and bitbucket of course… and that is disclaimed in the article
- Headless Watir using both HTTPUnit and PhantomJS
- Implementing HTTP Status Codes in WebDriver, Part 2: Achievement Unlocked – umm, part 2?
- PhantomJS + Plugins + AWS + BrowserMob Proxy – proxy all the things! Including headless things.
- Mastering the Craft is a good reminder, but also, eBay has its own customized version of eclipse? Guessing this is one of those ‘at scale’ solutions
August 12, 2013
Brain fried from PyCon Canada 2013 and ‘some’ browser tab is misbehaving which means its time to start closing some of these.
- Patchwork seems like an awesome idea, but at the same time, I’ve had to work in heavily monkey-patched RoR apps before…
- Evolving syntax is PHP specific in its examples, but the ideas transfer
- Roslyn + Selenium: Scripty C# Powering Browser Automation – some C# voodoo?
- It’s like 10000 knives when all you need is a Spoon – or specifically, this particular spoon which is yet-another-android-automation-tool. See comments for a bit of discussion re Appium which seems to be the currently best marketed solution in this space
- Planet generator has absolutely nothing to do with automation, but is just cool
- TestSpicer could be cool if it is massively flushed out
- Compatibility changes in IE11 Preview is going to break things I fear, for instance the readyState stuff?
- PyCon Canada 2013 decks are now up
- Implementing WebDriver HTTP Status Codes, Part 1: Challenge Accepted – is interesting in that it uses Fiddler
- Links are not buttons. Neither are DIVs and SPANs – this, a million times.
August 9, 2013
Selenium Meetups are great, but…
Have you ever wanted to attend a Selenium Meetup but there’s not one near you? Or maybe there is but something’s come up and you can’t make it out that night? Or maybe the meetup near you struggles to get good speakers and have a consistent schedule? [Note from Adam; like, say, the Toronto one…]
We can do better
Well, what if there were a way to attend a meetup regardless of location?
And what if each meetup you attended was lined with core maintainers of the Selenium project?
And if you missed it, what if the whole thing was recorded and available for you to review at your leisure?
Well, now you can.
The World’s Best Selenium Meetup
Introducing Selenium Hangout — the world’s best and most accessible Selenium meetup. An entirely online meetup that leverages Google Hangouts and live streaming to YouTube. All meetups will be recorded and posted online afterwards.
Each meetup will contain a small panel of people from the Selenium Community (e.g. core committers, automation practitioners, etc.) and they will discuss various topics (TBD).
How to attend
Simply follow the SeleniumHangout Twitter account to find out more.
July 28, 2013
A ‘should be scripting, but brain stuck in neutral so closing some tabs’ edition of the Smattering.
- The slippery slope isn’t automation related, but if your employer does these things I’d suggest logging a bug and then finding an ethical job
- Why Package Signing is not the Holy Grail – crypto / security is hard. Also, I have a signed package for you to install…
- PHP and Async requests with file based sessions could be a way to speed up a PHP site. Which in turn reduces the amount of time your scripts take to run
- Canadipsum, eh? just because. (eh)
- Using CodedUI testautomation without UIMap files brings Page Objects to CodedUI
- Continuous Delivery Workshop With Neal Ford (@Neal4D) – a Retrospective – yup, the hard part is not the technical bit, but the people parts
- librarian-puppet says You can all stop using git submodules now which is good enough for me
- Highlighting the element before any clicks: A foray into the AbstractEventListener — the event listener stuff is something I need to sort out.
- phpci is built specifically for php apps, and doesn’t pretend to have the features something like jenkins does
- Beware subclassing Ruby core classes – there are likely parallels in other languages as well.
July 22, 2013
Apparently today’s ‘wait for an email’ task is to whittle down the smattering queue some more.
- I won’t even pretend that FOAAS has to do with automation, but makes me laugh. Also, depending on how crappy your place of work is, it might not be SFW
- PHP RFC: Importing namespaced functions is interesting if you are writing your scripts in a Functional manner. In PHP. In a future where it gets accepted and implemented.
- Measuring Web Page Load Times using JMeter — and read the response articles too for clarification / elaboration
- I kinda like that Se suites are making their way into large projects such as Moodle’s functional-test-suite repo. But at the same time it worries me when it hasn’t had a commit in 10 months. Suites should likely change even more than the app code it exercises
- jasmine tactics screencast — on the long list of tools I should learn
- Introducing the Mogotest Jenkins Plugin – hurray for more pipeline integration points
- The DOM isn’t slow, you are. — set the phasers on snark, and then read it anyways.
- Cross-Browser, Event-based, Element Resize Detection – edges are sharp.
- There is No ROI in Social Media Marketing – read this, and now read it again swapping in Functional Automation everywhere
- Now Available: Pocket Guide to Colour Accessibility could, in theory, be translated into a set of ‘rules’ to validate pages against since we can the colour of elements and their computed css values.
A Sunday Smattering? Sure!
- Solution to the Selenium with Firefox 22 Issues and How to Report Issues – Open Source is hard. Supporting Open Source’s infrastructure is harder — by a large margin
- frequests – asyncronous HTTP Requests; not sure where I would use this, but…
- why I don’t touch crypo – again, don’t. touch. crypto
- Five reasons why you should quote attribute values in HTML5 – for the record, you should do this in HTML 4 as well.
- All the ‘Write The Docs session videos — a conference I couldn’t afford to attend, and likely don’t have the time to watch the videos now
- Automated Testing of HTML5 Canvas Applications with Selenium WebDriver – more and more important…
- Solving window.onbeforeunload nasty prompts
- pytest-poo for when your tests are, erm, crappy
- Tada! Here is SlimerJS! – like PhantomJS but for Gecko. I think.
- Did I select the right element? is a neat trick for highlighting things — even if the escaping of the code didn’t seem to survive formatting
July 11, 2013
40-ish minutes until midnight eastern so that counts as two days in a row, right? Right?
- Improving jenkins execution times by common sense — common sense. sadly lacking most days.
- How to make test automation more effective? is useful up until the pitch at the end. So read until you get to that.
- Data Structures for PHP Devs: Trees – non-trivial data structures are non-trivial
- Writing clean WebDriver test suites for “duplicate” functionality by parameterizing on page objects – I especially like the usage of ‘might’ at the top
- dalek-internal-webdriver – what’s a day without a JS webdriver implementation?
- Antialiasing 101 – I kinda think that automators should just spend a day reading this site rather than reddit
- RSpec 2.14 is released!
- HTTP/2 Status Update – Ugh.
- PHP 5.5: Generators – You know, with yesterday’s phpenv I’m almost tempted to make some of my stuff PHP 5.5…
- Program Like a Machinist – hurray for understanding the motorcycle example!