This is the multi-page printable view of this section. Click here to print.
Blog Posts - 2012
- A Smattering of Selenium #132
- A Smattering of Selenium #131
- A Smattering of Selenium #130
- A Smattering of Selenium #129
- A Smattering of Selenium #128
- A Smattering of Selenium #127
- A Smattering of Selenium #126
- A Smattering of Selenium #125
- A Smattering of Selenium #124
- Announcing Selenium 2.26: the “It’s Really Real” Release
- A Smattering of Selenium #123
- A Smattering of Selenium #122
- A Smattering of Selenium #121
- A Smattering of Selenium #120
- A Smattering of Selenium #119
- A Smattering of Selenium #118
- A Smattering of Selenium #117
- A Smattering of Selenium #116
- A Smattering of Selenium #115
- A Smattering of Selenium #114
- A Smattering of Selenium #113
- A Smattering of Selenium #112
- A Smattering of Selenium #111
- A Smattering of Selenium #110
- A Smattering of Selenium #109
- A Smattering of Selenium #108
- A Smattering of Selenium #107
- A Smattering of Selenium #106
- A Smattering of Selenium #105
- A Smattering of Selenium #104
- A Smattering of Selenium #103
- A Smattering of Selenium #102
- A Smattering of Selenium #101
- A Smattering of Selenium #100
- A Smattering of Selenium #99
- A Smattering of Selenium #98
- A Smattering of Selenium #97
- A Smattering of Selenium #96
- A Smattering of Selenium #95
- A Smattering of Selenium #94
- A Smattering of Selenium #93
- A Smattering of Selenium #92
- A Smattering of Selenium #91
- A Smattering of Selenium #90
- A Smattering of Selenium #89
- A Smattering of Selenium #88
- A Smattering of Selenium #87
- A Smattering of Selenium #86
- A Smattering of Selenium #85
- A Smattering of Selenium #84
- Announcing Selenium 2.22
- Selenium Conf: Community
- Selenium Conf: Speakers
- Selenium Conf Keynotes: Liz Keogh
- A Smattering of Selenium #83
- A Smattering of Selenium #82
- A Smattering of Selenium #81
- Selenium Conference 2012
- Support for Ancient Browsers
- A Note About the Cybervillains SSL Certificate
- A Smattering of Selenium #80
- Announcing Selenium 2.19: the Prancing Unicorn release
- A Smattering of Selenium #79
- A Smattering of Selenium #78
- A Smattering of Selenium #77
- A Smattering of Selenium #76
- A Smattering of Selenium #75
- A Smattering of Selenium #74
- A Smattering of Selenium #73
- Selenium 2.16 Released: Welcome to 2012!
- A Smattering of Selenium #72
A Smattering of Selenium #132
2.27.0 is now out which means you can close the browser tab that points to the old Firefox installers.
- Not Providing an HTML Page? Think of the Kittens! is important to remember. We want to fix your bugs. Help us help you!
- The HTML5 download attribute is another bit I am not looking forward to have to automate
- Refactoring to Improve Testability – what can I say? I like experiential posts
- Oh how it pains me to suggest that SikuliWebDriver looks mighty cool
- Page Visibility API Support in Opera 12.10. Again, not something I am looking forward to automating.
- Ah brogrammers. DO NOT SEND “REGISTSER BITCH” TO GUESTS
- Ruby script to change the desktop background periodically on Mac is just cool. And you will notice that even though they could have spun up a browser to do this, it wasn’t the right tool for the task. Consider that the next time you want to light up a browser.
- So what that it is over two months old, but PHPUnit 3.7 lists some relevant information about the release
- SeleniumScreenSnapper seems pretty clever. Almost steal worthy in fact
- Supercharging PHP MySQL applications using the best API is useful when testing your app in general, but also remember that if you are trusting what the browser is telling you and not verifying it with the database you are asking for a world of hurt
A Smattering of Selenium #131
Not sure how widely broadcast this has been (cus, you know, we’re good at communicating and stuff), but if you are using 2.26.0 and Firefox 17 you will get a nasty bug. 2.27.0 is in the works to address this (and a couple other things…) so if you need FF right now, keep your install at the latest 16 release.
This is pretty decent. Except the usual “Feh! We don’t need humans to test! Automate everything!” bias you see around. Psst kids! Even the poster children for Continuous Deployment actually do Continuous Delivery (humans! shocking!). Oh, and the usual gloss over ‘cluster immune system’ which is the only part of this tend that has an elegant solution.
Running Automated Tests in Parallel – Part 1‘s new bit to me was how to run groups of jUnit scripts from maven. Sure, I think I knew there was a way to do it but never had to think about it before. And as a bonus, here is the video that goes with the post
PHP Sadness is kinda amusing from a language trolling perspective. But also actually really useful. Now for a Ruby Sadness and a Python Sadness. Of course, a Perl sadness would just be a one of those ‘try to click this moving box’ widgets…
Following up on not automating GMail (aside through standard low-level protocols like IMAP or POP3) is a MailBox class for processing IMAP email (Gmail from Python example
I’ll admit that Writing JMeter test plans in Ruby has me pretty excited
But if Ruby/JMeter doesn’t do it for you, then maybe Funload will – How to stress test your app using Funkload — part 1
Search is one of those things a lot of automation get burned by since things are often going in parallel and not casually waiting for someone else to look for something that was just put in the index half a second ago – Moving the Marketplaces to Elasticsearch
I Call Them ControlObjects; I call them Elements, or with increasing frequency ‘Unnecessary Designer Porn’ for the rash of js-widgets-that-look-like-standard-html
I’m kinda amazed I haven’t had to use the regex part of my brain in awhile, but everyone doing automation really needs to have that section tucked away somewhere – A Practical Example of Regular Expressions
Low Power Server Monitoring with a Raspberry is just cool
A Smattering of Selenium #130
Can’t get enough Se bloggage? Have a look at Overview of Selenium Blogs — though I must say there has to be something wrong with the Alexa algorithm if I am that far down the list. And behind both David and Alister. 🙂
- Must Have Git Aliases: Advanced Examples reminds me of someone I used to work with who likely couldn’t function on a clean unix system, but with all his aliases was mind blowing to watch
- Writing a Selenium Test Framework for a Django Site (Part 3) has the usual myths and FUD around XPath and embeds locators in the script method but is the first thing I’ve seen that uses the Color class in Python so I’ll overlook those things. This time.
- How to solve Selenium focus issues introduced me to jQuery’s :focus pseudoselector
- I’m sure there is something to be learned from Use Rails until it hurts. Especially from the paragraph above the twitter inclusions
- Checking an image is actually visible using WebDriver is something I plan on stealing.
- Android 4.0 in VirtualBox seems like a cool way to build out an android build farm
- Autoloading in PHP and the PSR-0 Standard has some Symfony specific bits, but is generally useful
- Extending Selenium with jQuery is something else I intend to steal
- From the same person is Combining py.test and Selenium to test webapps which shows off some of what py.test can do with fixtures. Not how I would do it, but cool none the less.
- Let me say this again; the officially blessed solution for getting response codes is to route your calls through a proxy (like the BrowserMob Proxy) and then ask it what they were. But if you are bound and determined to craft ‘solutions’ that only work in a single browser, or a single language, or require changing your application then How To Get The HTTP Status Code In Selenium WebDriver will make good breakfast reading. North American time that is…
A Smattering of Selenium #129
A hardy welcome back to work to our American friends who spent Thursday being thankful for what they had, then getting into fist fights at stores for things they thought they didn’t need the next day.
- You know what would be grand? If various widget makers would provide automation hooks for their stuff so we, as automators, don’t have to write them ourselves. Like for High Charts (in Java)
- Why you should never use a boolean field (use an Enum instead) is food for thought when designing your page objects
- Do you work for Google? No? They why do you think you need to automate GMail?!!? Not a new rant of course, but imapIO looks like it might not suck too too much if you are solving this problem in Python and must get an email out of GMail
- windows.h.js. Yes. .js. And no, I have no idea what you would use it for.
- Someday I will find the time to learn Profiling Ruby, or, How I Made Rails Start Up Faster for Python and/or PHP if just so I really understand what goes on under the hood. (And you should too. Understand that is…)
- Two more OTA API examples; Creating a Bug in Quality Center using the OTA API, Executing Tests in Quality Center using the OTA API
- How I Write SQL. Mmmmm pretty. And the killer part is right at the end; While very long, this should ideally be quite legible and legibility trumps length every day.
- Before you whinge, understand why something is. Like say, Are you kidding me, IE Driver? Another freaking thing to download?
- Run JavaScript in Selenium tests. Easily. And by Selenium they mean WebDriver and by WebDriver they mean Webrat.
- Mobile Testing Summit videos are up! for those of us that couldn’t make it. Or could have made it were it not for speaking commitments bookending it on the other side of the continent.
A Smattering of Selenium #128
…as I avoid writing code that deals with dynamically constructed tables. Without any sort of unique locator. Of course.
- I would contend that the ‘right’ solution to this problem is to use a CI container and have it email you, but if you are using Java and not using CI, then Automatically Email the Reports After Selenium Test Execution could be valuable.
- I feel like I have already linked to Webdriver StaleElementReferenceException but the archive search is, erm, not great, so here it is again. Notice the solutions to what are all synchronization problem is not to turn on implicit waits.
- A lot of the reason for lighting up a browser is to be able to do input with the app; The CHECKS Pattern Language of Information Integrity is useful reading in this regard
- While I wait for MS to send me a free Surface to play with (*hint*), Testing Applications by Using the Surface Simulator Automation API seems like they have at least given the problem some thought. Of course, it starts with a hand-holding of how to use an IDE. How very Android of them.
- Inspect the State of Your Running iOS App’s UI With Symbiote — Essentially Symbiote is Firebug for your native iOS app.; you gotta love a good elevator pitch
- I don’t the Opera kids get enough credit for what they’re doing (and did first iirc) – Introducing mobile browser automation
- If you brain didn’t hurt yet, it will now. What’s the difference if “" exists or not?
- OAuth2 seems to have died a public flaming death, so some smart folks created oz. There is some snark I can’t find about not liking a fork so creating a new one and now you have n+1 problems or something… All auth system suck BTW.
- Ivoire has some RSpec goodies — but in Python
- What? You’re not using data-* attributes yet? Shame on you…
A Smattering of Selenium #127
Within an hour I had some more things to add to the last Smattering. Oh well, I’ll just save them up…
- Har-assert looks like something useful to include in your project if you are using Java. And the browsermob-proxy (which of course, you all are)
- Web Content Accessibility Guidelines (WCAG) 2.0 seems like something more people should care about.
- Right. Here is another cool part of the nebulous, meaningless thing called HTML5. Using the PageVisibility API. Anyone want to take bets on how long this gets used for evil rather than awesome?
- JUnit 4.11 is out. The link is to the release notes. The ‘test execution order’ stuff seems like bowing to pressure rather than good test design…
- Why Averages Suck and Percentiles are Great is your monthly statistics lesson.
- Alright, here is the challenge for everyone who wants to get involved in the project but is afraid they cannot code well enough. (If I can code well enough, so can you…) The docs can always use more people! And then we should get !se to work on via DuckDuckHack.
- Test::Page is another helper for making Page Objects in Ruby
- The first item in An impassioned plea to other Start-up founders to use automated tests is the only one that really holds any water. The rest, well, is showing the author’s developer bias I think. (The rest of his blog seems pretty good as well.)
- RainbowDriver looks interesting. Though after the flurry around the Mobile Test Summit there seems to be no more commits…
- The Shumway Open SWF Runtime Project Not sure how I feel about Shumway. On one hand, open is better than closed, but from an automation perspective, SWF is a pain
A Smattering of Selenium #126
I’ve been threatening that I was going to do this for awhile…
- What it feels like when you are running a long running batch of scripts…
- Remember kids, your script cannot adapt to the unexpected…
- But on occasion they can do something that…
- Oh! Here’s a useful metric of productivity!
- And just when you thought you were doing something without anyone paying attention…
- Unfortunately what a lot of automation is like…
- Or how about when you are writing code against the wrong environment…
- How writing tests for a testing framework feels…
- has too many to link to individually
A Smattering of Selenium #125
Right…
- Scripting batch 1: waiting for an email
- Scripting batch 2: waiting for an email
- Scripting batch 3: waiting for an email
- Scripting batch 4: waiting for an email
Perhaps I’ll do something else right now…
- Alright kids, its not the Olympics, but Curvy would be a fun app for someone to automate.
- Wow that was fast. Øredev has started to publish the videos from this year’s conference. Lots of good things in there.
- The right tool for the job! is one of my favourite rants. And one that catches people off guard when I mention it — ‘but you are a selenium consultant’…
- Mobile apps still need automated tests. Yup. Of course, its not like the OS vendors are helping their developers to do this. Actively hindering them is more like it…
- On Being A Senior Engineer. Somewhere, a newly minted ‘Senior QA Developer’ fresh out of school is having a bit of a cry…
- Right. So how would Composition over inheritance affect the Page Object pattern. Or perhaps not affect, but what would that look like?
- Hrm. Eclim might be how to make Eclipse not suck.
- And while I am taking cheap shots at Eclipse … IDEs Are a Language Smell. Or put another way, Dear Android…
- Someone (or someones) should do a time analysis of writing out scripts something like Where Does All That Time Go?. I suspect though that a lot of automation would be cancelled as a result though.
- WonderProxy seems like it might be a useful tool. Especially if you are doing behaviour based upon where you are. Though wow it is annoying to be somewhere you don’t speak the language and have your language cookie ignored. *cough* google *cough*
A Smattering of Selenium #124
Too. Many. Links. Not. Enough. Posts.
- The important word is strive in 100% Automation Pass Rates.
- PHP Error could be interesting to turn on in your automation environment. Well, if it is a PHP app at any rate…
- Testing mobile? Tap Into Mobile Application Testing by Jonathan Kohl
- Behavioural testing in .Net with SpecFlow and Selenium – Part 1, Part 2
- cocoa-rest-client could be a useful tool for the toolbox if you are on mac and are testing rest apps. (And once you get it working here, you can automate it using Requests or similar)
- sim_launcher is tiny little sinatra app to allow launching an iOS app in the simulator via HTTP and seems like one of those glue bits for large scale automation
- Sick of your current random string solution? kiwipsum.
- Changing Browsers without changing Code is a neat (?! — it is java…) solution to flipping browsers via command-line arguments.
- Repeat after me, erm, Jez; There’s No Such Thing as a “Devops Team”
- Doug’s AppleScripts for iTunes feels like a peek into what can be done on the mac.
Announcing Selenium 2.26: the “It’s Really Real” Release
It’s been a long time since we announced a new Selenium release on this blog, as we moved to a model of quicker releases, but we’ve been working on 2.26 for far longer than normal — it’s out! Download it now! — so I thought it best to let you know. We’re aiming to head back to faster releases, so hopefully you won’t see another blog post about the release for a while (though I’m sure they’ll appear in the “Smatterings of Selenium” posts)
Some highlights that you might be interested in, include support for the latest and greatest versions of the popular browsers out there (including native events on Firefox 16!), the deletion of deprecated methods from the language bindings, better emulation of user input on IE when dealing with “sucker fish” style menus, and a slew of bug fixes. There’s more in the changelog!
The inimitable Jim Evans held the Release Bacon for what has become one of our most challenging releases to do, so a big “thank you!” to him. A “thank you”, also, to the rest of the core developers and Sauce Labs team members who worked on fixing so many bugs and getting our continuous build green, especially Alexei Barantsev who did some amazingly detailed and painstaking work to help the release through. And a final “thank you” to our users: thanks for your feedback and support. 🙂
A Smattering of Selenium #123
- If you are not using something like Chef or Puppet to keep your grid nodes behaving then you are absolutely doing it wrong. Here are all the PuppetConf 2012 Videos to help you get started. See also this
- Apple’s Lightning port dynamically assigns pins to allow for reversible use is just too geeky not to include. Hurray for hardware lock-in?
- Websockets 101 — again, if your app uses a technology, you better be damned clueful about it if you are going to automate it
- Child Elements seems to address the ‘is my element where I expect it’ problem though I’m still not convinced that is a problem that needed solving
- HTML for Icon Font Usage could be interesting. Though introduces me to the notion of ‘pseudo elements’, which in addition to ‘shadow dom’ makes me think we may have finally group-think-ed the HTML specs enough.
- Increase Virtual Box VDI disk size on MAC or Windows — amazing how much faster a vm runs when you give it enough disk to breathe
- Using ShiningPanda and Django? Multi-browser Selenium tests with Django 1.4+ on Jenkins is for you!
- I use TextMate, but How to save/restore Sublime Text 2 configs/plugins to migrate to another computer? could be useful for the even cooler segment of people
- Font geek enough that you want, no, demand! a specific font for writing code in? Adobe is here to help; Announcing Source Code Pro
- I’m kinda amazed that more people don’t do this; Calculating the code coverage of integration tests. Afterall, imaginary numbers FTW!
A Smattering of Selenium #122
Let’s try the ‘all video’ edition this time.
Hrm. That didn’t work … let’s add some slide decks.
A Smattering of Selenium #121
Its the ‘all github’ edition today!
- Dave goes a little strange on us with his diy_framework as an emoting robot. Here is the deck that went along with it.
- Can’t get enough of the food-based frameworks from the kids at Sauce. If you are using the PHPUnit included WebDriver bindings [and Sauce OnDemand] then Sausage could be of interest.
- Of course, if you are just using PHPUnit, then paraunit could of interest. I’ve written similar before, but this looks cross-platform.
- buster-selenium is, erm, well, Selenium for buster.js
- Why did I only learn about ievms now? Oh. Well, one of the requirements is patience. That explains it.
- gifsockets; I’ll wait while you pick up the pieces of your exploded brain
- How to capture a FF profile log. Dunno what gets put in it, but tuck this away in your back pocket
- I don’t have a use case for flower but collection of modules to build distributed and reliable concurrent systems in Python seems link-worthy
- Again, not sure when you would use it, but webdriver-user-agent-randomizer seems darn cool
- You don’t see too many open-source ios apps, so here is GoogleTransit-iOS6
A Smattering of Selenium #120
- Here we grow again. Telerik acquires Fiddler. What’s next?. So. When can we look for nice Se integration with Fiddler then?
- Third-Party Issues and the Performance Ripple Effect is interesting, and something I’ve harped on consistently.
- Automated Web Testing with Selenium is 3.5 hours of videos on Se. That has my usual complaints; shouldn’t have Se-IDE, there is no such thing as ‘basic’ and ‘advanced’, etc. But its there.
- The Oracle Problem and the Teaching of Software Testing is long, but important to understand when doing automation. And its sad how many people don’t know this but automate anyways.
- Sure. A week after I write a web server for PHP to use in php-webdriver’s test suite I see this; PHP: Built-in web server. Welcome indeed.
- I want to start a company right out of school! is for designers, but applies just as much to programming/automation.
- This online markdown editor is awesome.
- Sauce Breakpoints seems like an interesting hack
- Since your scripts are just programs, they can call other programs. With python you can now do that with sh instead of subprocess (which always boggles me for some reason)
- Using a business readable language for browser automation talks about using a cucumber clone with haskell. The mind is blown.
A Smattering of Selenium #119
Its that time again, 4th Annual Automation Honors Voting is now open. Vanity contests FTW!
Introducing the Sauce Plugin for Selenium Grid from a product perspective is huge. And in a roundabout way proves I am not completely crazy…
Benchmark of Python WSGI Servers has lots of numbers, and graphs and charts.
Seleno makes some bold marketing statements (‘the RIGHT way!’). Looks like a framework in C# that forces people to use Page Objects
Automating an SVG game with Selenium WebDriver from Andreas Tolf Tolfsen on Vimeo.
Splinter is another python web automation framework. How long until this gets marketed as the next Selenium killer that uses WebDriver under the hood.
If you’re using Maven, maven-notification-center could be interesting. Well, if you are also using Mountain Lion.
And I quote from Acceptance Testing Revisited – Asking customers to read and write acceptance tests is a poor use of their time, skill, and inclinations.. THIS!
OH NOES! Your Credit Card Pin has been leaked!!!!
Testing Automation With Selenium – Part 1 starts with Never send a human to do a machine’s job but also omits Never send a machine to do a human’s job
Dog Show Quality is where “Quality” is its own goal. That’s from about halfway through the article. Hands up when see this with automation all. the. freaking. time. (All your hands should be up. OK, you can put the down now.)
A Smattering of Selenium #118
<Insert witty/snarky commentary on something here>
- Apparently the TestWatchman thing I linked to is deprecated now in favour of TestWatcher (shows how much I pay attention to JUnit stuff…). Here is an example of TestWatchers and RuleChains. No, I don’t know what the blurb at the top says.
- Sure, we’ve all see lorum ipsum text, but do you know what it (ish) says? now you do
- From the ‘MEASURE ALL THINGS!!!’ category is Mozilla’s BuildFaster. There was a cool graph of build times I saw somewhere too…
- The kids at Google have released Wicked Good XPath: a faster JavaScript XPath library. I suspect Se will be growing this appendage fairly soon-ish. And then we get to re-learn all the gotchas of a new library. 🙂
- Provided without comment
- Discussions about PageFactories can only be a good thing. Optional Elements. Black Magic + explanations = Magic.
- Dear Google Code team; How we keep GitHub fast.
- There seems to be lots of good stuff on Darrell Grainger’s blog
- An Analysis of the Top Python Repositories Hosted on Github is interesting. I have no idea how to apply this to Se, but still…
- Read Naming From the Outside In before writing another line of code in a page object
A Smattering of Selenium #117
- Evolutionary Project Structure talks about a particular project structure, but this is one of those fun developer opinionated things to geek out on
- Testers Caught Sleeping on the Job is not browser-based, but you cannot bash sleeps enough. Also has a pretty amusing photo with it
- PHP: The Right Way is of course one person’s understanding of the ‘right way’ but still not bad.
- Automation is Code. But are your code conventions hurting you?
- Hate Eclipse for writing your scripts in? JetBrains has specials. I’ve only seen PyCharm, but it looked pretty nice.
- Has anyone tried manipulating tabs with WebDriver the way that is described in Closing Tabs in Chrome
- I haven’t watched it, but Moodle is now doing a series of videos on how they do automation.
- Want to hear Simon rant about how to Stop the rot: Banishing Flakiness from Selenium Tests with Simon Stewart? What are you waiting for then? Register already. Sheesh.
- The W3C has github-ified the html spec
- Looks like the Se Plugin for Jenkins has been re-written. Might be worth a look again.
A Smattering of Selenium #116
So do people celebrate the day after Labor day as the beginning of summer?
- Web Performance Power Tool: HTTP Archive (HAR) is worrisome that HARs are being billed as a power tool, but full of good stuff
- How do you pick responsive images breakpoints? is another one of those problems I think we’re going to have to worry about
- TestWatchman seems like an interesting bit of JUnit4. (At what point do we have to stop saying 3 or 4 when referring to JUnit?)
- I’ve been headhunted by Google for years now, Test Mercenaries is the one team that would have made me leap.
- Looking for the patches for last week’s Sauce announcement? They’re here. Holy magic numbers, Batman.
- I finally annotated A PHP Page Object Example
- I think you should let your database get dirty, but Configuring database_cleaner with Rails, RSpec, Capybara, and Selenium does seem like a useful gem
- Robot Framework – Windows Installation The Easy Way is the easy way to install RF on Windows. Shocking, I know.
- Amateurs Study Tactics. Professionals Study Logistics seems to resonate with me in how a lot of people approach automation.
- Weekly “Ask an Expert” Q&A sessions for Test Automation with the Mozilla ‘A-Team’
A Smattering of Selenium #115
The big news in the twitter-verse yesterday was the announcement of Apple Sauce and Android Sauce from Sauce Labs. I of course jumped all over that bandwagon with Apple Sauce and Android Sauce .. Yummy! (And Fully Supported) * Accessing priviledged Javascript APIs from your web page in Firefox with Selenium lets to pull even more strings of the browser than you were supposed to be able to. Something I suspect Marionette will make redundant, but until then…
Use Xvfb, Selenium and Chrome to drive a web browser in PHP starts with the same-old, same-old, but scroll down to the bottom for squid and iptables and other things
Integrating Selenium with ALM – a simple recipe shows how to do it, but I still say whomever packages this up really well will make a lot of money
You Papers Please is something that will start to come up in the Se community soon-ish I fear.
Emulator Networking is a link I wish I had before spending an hour or so trying to search SO etc. for it
The Axis of Eval is just funny
BrowsermobRESTclient is a Java client for the BrowserMob Proxy
My Shallow Dive into iOS automation looks at the various options out there for native automation
Py.Test is awesome. And makes my brain hurt.
slides:Funcargs & other fun with pytest from Brianna Laugher
video:
code:
A Smattering of Selenium #114
Hurray for having fillings done on both sides of my face. Don’t expect me to speak without drolling for rest of the day.
I’ll admit to not knowing what the difference is/was between FluentWait and WebDriverWait, but FluentWait with WebElement explains it well. With sample code!
PHPUnit + Selenium + php-webdriver = hours of entertainment (Part 1) shows a nice extension to PHPUnit_Framework_TestCase. Now if only he was using my active fork of the php-webdriver bindings rather than the original project Facebook seems to have abandoned.
Speaking of Facebook, Under the hood: Rebuilding Facebook for iOS is going to be oft cited in the whole ‘html5 or native’ discussions for the next while I think
Santi spoke at the recent San Jose Selenium Meetup; video, slides
Automatic Conditional Retina Images seems like something we should know how to check if its being loaded properly or not. Guess I need to go buy an iPad to check this out…
Puppet Labs updated some of their documentation recently; Puppet 2.7 Reference Manual, Factor 1.6 Core Facts
Reddit opensourced push which is yet another deployment tool. Remember though, you are likely not Reddit.
Hey lookit! The WhiteHouse uses Selenium. Though the scripts are Selenese. And named .php for some unknown reason. Actually, they look a lot like they were created as part of some sort of scaffolding. Anyone?
Not sure what to do with it, but Updated List Of Vendors In The Content Delivery and Transparent Caching Markets looks rather useful. Or not.
A Smattering of Selenium #113
/me is not looking forward to when the jet lag whallops him
/me is not looking forward to when the jet lag whallops him
- Thorough look at PHP’s pcntl_fork() is how we have to do parallel tests with phpunit until it grows it proper
- Catch Javascript Errors on the Page with Watir or Selenium – This!
- Categorising WebDriver–Navigation, Interrogation, Manipulation walks through the WebDriver API bit by bit. Of course, now the trick is to keep it up to date. 🙂
- Screening uses Se deep in its guts to script up Montage apps
- Millions of web pages use the -moz-opacity:0.7 tag and in javascript. It’s broken now since FF 13.01. Please can you “alias” it back into your main browser code. Thanks. makes Issue 141 look reasonable. Also raises the question whether we should catch prefixed CSS styles in our static analysis checks
- Cheezy is a gem making machines; Android Debug Bridge, DataMagic
- Remember last week’s Olympics doodle automation? Here is how to do Jumping the Hurdles With the Gamepad Api. Paging Mr. Huggins. Your next robot’s purpose has been discovered
- Using IE? Read You’re Doing It Wrong: IE Protected Mode and WebDriver. Not using IE? This is not the post you are looking for.
- Gridinit was relaunched recently. Tim has blogged a whole bunch of documentation about it this week
- Orchestrating Test Automation is essentially why I look for testers who can code rather than coders who [think they] can test
A Smattering of Selenium #112
Eyes are gross.
- Thucydides has a spiffy new website
- How Eventbrite uses Jenkins and Selenium which I think I’ve linked to before, but can’t seem to find reference to.
- What’s my UDID? is now the new bar for online tutorials
- Creating Maintainable Automated Acceptance Tests from Jez Humble
- Selenium Users Anonymous from Dave Haeffner
- Capture/Playback: The Vampire that Will Not Die has perhaps the most unfriendly url in the history of the internets, but is a nice little rant anyways.
- Thinking about lint-ing your JS whilst you automate? This SO answer runs down your options.
- The ‘Custom Locators’ series (part 1, part 2) talks about developing a custom Page Factory
- Remember kids, the technical term for this is ‘3rd party crap’ and you should turn it off in your automation environments for just this reason. Facebook Outage Slowed 1000s Of Retail, Content Sites
- Verelo is the latest SeAAS vendor. Their niche seems to be in real-time monitoring.
A Smattering of Selenium #111
When this gets published, I’ll be sitting around the Barcelona airport waiting for my connection home. Unless I screwed up the time math. 🙂
- The dangers of uniformity pours cold water on something that I know I used to preach for automation environments.
- How to crawl a quarter billion webpages in 40 hours doesn’t have code listed (he explains why) but it explains how you could write it yourself if you wanted.
- No coffee today, a report of the Munich 08/12 test automation code retreat has me thinking that for Se Conf next year, a ‘test automation code retreat’ might be an interesting thing.
- Behat + Selenium2 / Webdriver is interesting. And has been updated to have a link to Behat + Selenium2 / Webdriver with MinkExtension which apparently is easier.
- Bouncing Python’s Generators With a Trampoline lost me at ‘tail call optimization’ but seems cool.
- The AA-FTT annual workshop was last weekend, here is an excellent write-up about what happened there.
- Droplets of Watir seems like a great collection of recipes for Watir.
- Selenium Best Practices is a good page, with a horrible name
- Workflow Driven Development: Asserting a Workflow using an Audit Trail reminds us that individual page states are not the only thing that matters.
- Mozilla drops usage of Selenium RC shows that Mozilla is right on the cutting edge. But also raises the question of when should the rest of us should drop it as well.
A Smattering of Selenium #110
Dear body; what time zone are you in?
Ah well, until that battle resolves itself, here are some links.
- Firefox the Clear Winner for Automated Testing has a wonderfully SEO friendly title, but really is just some cool usage graphs for their system. Extrapolate beyond that at your own risk.
- Task Automation FTW! — make your application installable! I did something like this a decade ago (also using python) but finding something in my own blog seems a harder challenge than it should be.
- Running SauceLabs Selenium test suite locally with PHPUnit explains how to solve my number one complains for the various BaaS vendor plugins.
- And TextMate is now Open Source, ya! Under GPL3. Oh…
- I don’t know what IFTTT is, or how to see the actual script [without joining], but Capture all Smatterings of Selenium entries to Evernote might be of interest to people. If a bit meta to be linking to it.
- So Patrick Lightbody isn’t at Neustar (which bought Browsermob) any more (congrats on the new gig at New Relic btw!) so I was a bit worried about what was going to happen with the BrowserMob Proxy. Seems the GitHub effect has happened once more and there are others also Tweaking BrowserMob-Proxy.
- As is the case with similar articles to Things I didn’t know about the WebKit inspector, read the comments for more things you likely didn’t know.
- Feature Flags in JavaScript – do this!
- Managing browsers from the command line on OS X is a bit of shell trickery I’d ashamed to admit I didn’t know. Well, the open bit at any rate.
- Code First API Library, Scaffolding & Guidance for Coded UI Tests seems very WebDriver-esque in how to do things. Go Team! 😉
A Smattering of Selenium #109
Going to be on an airplane for the better part of the next day, so will likely miss some links … unless I am tagged on twitter with it.
- Introducing The Driver Binary Downloader Maven Plugin For Selenium solves a problem that has been solved a couple times but this seems the slickest. Normally I would suggest just using Chef/Puppet for this but it makes sense in the Maven context. I think.
- Speaking of Maven, Maven Tiles brings modularity to your modularity
- Maven, Android, Travis-CI and More Awesome Sauce
- Google’s Olympics Doodles … with Watir
- And using Sikuli to automate Hurdles
- When to Use Test Automation (and when not to) is barely just the tip of the iceberg
- Building and testing at Facebook is meh (and/or scary depending on whether your come from a dev or test background) but ‘gatekeeper’ sounds pretty rad. And is not currently on their github page.
- RSpec: Thank You for Running My Tests in Random Order — well, Test interaction sucks summarizes things pretty well.
- Documenting a mobile interface using Chrome’s user agent setting is a useful trick. Can we change the user-agent through WebDriver?
- Handle popup windows in Selenium 2 uses a different trick to find windows than I use. And thats a good thing.
A Smattering of Selenium #108
Apparently the links are slowing down for the summer?
- Ralph Bodenner talks about New Relic’s experiences at the SF Continuous Delivery meetup
- Xelenium: Security Testing with Selenium! is kinda an interesting use case
- Introducing mobile browser automation from/with Opera
- A minimal WebDriver based DSL is a bit of an experiment
- Testing Chef Cookbooks is something you didn’t think you needed to think about
- NASA’s github is not Se focused, but could help you build your own Mars rover
- WordPress Performance is a nice deck with lots of graphs and pictures
- Principles of Agile Test Automation outlines 4 principles and how they can often compete with each other
- Cucumber.js integration for SocketStream
- Testing Django applications with Selenium isn’t too bad. Of course, its logging in through Facebook which is one of those things you should have your development team provide a bypass for…
A Smattering of Selenium #107
Back on the train again. Wow, the highway is screwed today.
The Automation Litmus Test is one that most companies face, but now it has a name
Okay, who has more info on the bots mentioned in Meet the ‘bots’ that edit Wikipedia? Highly doubt that they are Se powered, but it is a fun mental image
Custom PHPUnit Annotations is useful magic if you are building out a framework
I’ve linked to things before about where to put things and how to find them, and purpose-oriented tests continues that trend
Moving Towards a Continuous Integration and Deployment Process is a nice explanation of how one team does Continuous Delivery. Notice how they use [human] testers.
The PageFactory is magic. And magic is not always good. As Iain found out..
- Using By objects to verify if WebElement present
- Using By objects to locate WebElements inside other WebElements
- Using By objects in canned WebDriverWait ExpectedCondition
Now, if someone wants to solve these problems using PageFactory and then update the wiki page…
The Simian Army has been unleashed! (Also know as the Netflix Chaos Monkey)
Rants of a Madman – I don’t care if it’s automation, it’s still code! is full of the ironies that testers inflict upon themselves and their teams
Capturing Performance Data from Selenium Tests is a recording from the July San Diego Web Performance Meetup
I used to believe in the tooth fairy is a nice reminder to be open to changing your mind.
A Smattering of Selenium #106
In case you are curious, the train just went past my old neighbourhood.
- Marionette – The Future of FirefoxDriver in Selenium is a project that has been hinted at here before I think, but this is its coming out party. Oh. And its the future of the Firefox driver. Now, what I need is an A-Team t-shirt…
- FlynnID 0.2 changes its config format. I don’t play around with Grid much (at all) but I’ve been told that you need this if you are going to have Android devicii attached to the grid.
- Geb: Groovy Browser Automation Tool – Part 2 starts out with a Page Object which is becoming the minimum standard for tutorial-esque posts
- Proxy & Executor is the meetup talk I did at SFSe, SJSe and YYZSe over the span of 10 days this month. Slides, multiple video, notes, etc.
- Hiss routes Growl messages through Mountain Lion’s Notification Center. I keep thinking I should use Growl for more things with my frameworks…
- Cucumber & Cheese is not just about Ruby and Page Objects but how everything fits into the whole ATDD thing. Is likely Watir focused, but there are few people I would trust with this content more than Jeff.
- Gargoyle is feature switching for Django.
- Automate the install of JDK 5 on Lion and Mountain Lion seems like something that should be configured via Puppet or Chef or similar, but is geeky enough to include anyways.
- Garzik: An Andre To Remember is not Se related, but is important for people to read and remember to have context. And to remember there is a whole world outside.
- Python For Humans is awesome. I’d like the whole ‘… For Humans’ thing to catch on.
A Smattering of Selenium #105
This was supposed to go out Friday, but the flu bug I picked up decided to move the schedule about somewhat.
- As Se marches towards being a W3C standard, the sort of thing in OAuth and API Providers: Come on guys. scares me more and more.
- Why WP_Error Sucks. Intelligent error handling is hard. Especially when you have a legacy install base to deal with. A nice little rant.
- Normally you see lists from people about books individuals want to see written, but Heroku has gone one step further and has released Contribute a Dev Center Article of articles they want to see written about how to use their stuff. Brilliant?
- Issue 141 is getting some publicity this week featuring prominantly in a talk I’ve given 3 times in the last two weeks and now Jim answers once and for all the question of WebDriver: Y U NO HAVE HTTP Status Codes?!. Who am I kidding? There is no way this goes away. USE A PROXY!
- find a valid and unused port to listen on is a nice little shell script that does exactly what it says. Was posted in the context of finding a port for grid nodes to listen to iirc
- How To Download Files With Selenium And Why You Shouldn’t echos a lot of what I say around scripting downloads. Also notice the bit at the end about checking status codes if you have an unnatural phobia of proxies
- BIDPOM drops support for Selenium RC I think is the first project I have seen come out and explicitly drop support for Se-RC. I expect to see more of this over the next year.
- I haven’t gone through it yet, but it looks like I need to pick up some Objective-C skillz soon and About Objective-C looks pretty good from the quick skim I did.
- I converted to OSX partly because it was FreeBSD way, way, way under the hood. Mac 10.7 $PATH Settings And Environment Variables really shows how divergent things have come. But is something you need to know when building slave machines
- Speaking of Mountain Lion, Interesting new UNIX commands/binaries in OS X Mountain Lion. Something about calling a utility that keeps the machine from going to sleep ‘caffeinate’ cracks me up.
A Smattering of Selenium #104
I think everyone is on holidays right now…
- Firefox 15 plugs the add-on leaks — Hey look! Openness from Mozilla! I’m not kidding when I say I want to see more of these; from all browser vendors.
- JUnit Oath — when geeks collide!
- Integration Tests With Cucumber-Jvm, Selenium and Maven is nice in that is shows the use of profiles (which is pretty much maven’s killer feature) but it uses Se-RC. Stop doing that!
- Testing your patience …. – Iain is on a role with 4 Se related posts in a week.
- Testing CSV file uploads is a RoR recipe
- Enforced Randomization is a lightning talk from last week’s CAST conference. I like the definition of the types of randomization
- Living with HTTPS explains some things you will want to be looking at in your Page Object validate() methods.
- Selenium on Fedora 17 is good once you ignore the first section. Se-Core is not a thing anymore; you don’t need to install it.
- Remove the annoying certificate error page when running selenium tests – You know, if you just DON’T USE INVALID OR SELF-SIGNED CERTIFICATES IN YOUR AUTOMATION ENVIRONMENTS then you don’t have this problem.
- I’m not sure how successful podcasts of programming sessions will be, but Every Android session from Google I/O 2012 is now available for your listening pleasure via the Android Developers Live podcast!. Of course, nothing on TDD, Automation or Testing. As usual. Testing tools being a lagging indicator indeed.
A Smattering of Selenium #103
Seems I had this all ready to go yesterday… oh, and Happy Birthday Jim Evans — maintainer of IE and C# driver. If also a day late.
- Migrating Unit Tests from Selenium to Watir Webdriver is less about migrating rather than a quick overview of Watir
- HttpWatch 8.4: Supports Firefox 14 and Selenium appears to be http traffic monitor — minus a proxy
- sms is a quick script which will send an sms from the commandline — using Se as the means of doing it
- Buster.JS comes at you from the new-and-shiny factory
- Javascript testing in parallel with WD.js and Selenium – mmmm parallel.
- The Pain of HTML5 – So. When does the backlash against HTML5 start?
- Acceptance Testing: Asserting Sort Order shows how they checked that certain fields followed other ones
- Mina is also from the new-and-shiny pile, but for deployment of applications. Also in the ‘we don’t like cap/vlad so wrote our own’ pile.
- Why I don’t like factory_girl — This story is one of Ruby groupthink gone awry
- Selenize looks like another Se-in-the-cloud, but tightly coupled to Github
A Smattering of Selenium #102
Apparently my body isn’t quite on left coast time…
- Butter Performance is a nice experience report on making a [big] html table behave. All sorts of headaches this would cause for automation.
- I’m now starting to think more about caching since some of that information is included in HAR files. So if you are automating against a Rails site, Advanced Caching in Rails: Revised could be of values
- Scaling lessons learned at Dropbox, part 1 is another fun experience report including a bit of hints at Dropbox’s own version of Netflix’s Chaos Monkey
- Finding the broken links in a webpage using Selenium is Se-RC, but the idea is sound. Notice how they are not using Se to follow the link. This is why Se-RC and WebDriver is soo much more powerful than Se-IDE.
- Mozilla’s WebQA team launched a new blog, and then immediately posted a flurry of things. Not to see if they can keep up the pace!
- How Many Build Agents Does My Project Need? (a.k.a. “The $16,000 Question”) is Bamboo specific, but the idea is sound and should apply equally to other CI containers
- I can not tell you how much I dislike JS Widgets. Here is how to use WebDriver with DHTMLX ComboBox
- RSpec-2.8 is released! is about 6 months late to be ‘news’, but –order random should be an option on all runners
- Speed Up the Development of Calabash-Android Tests talks about how they extended irb to have a shell which will run things on their device. This seems like an stealable idea; run Se Server in a terminal, execute a script which doesn’t close the browser, run commands against it. Just thinking out loud…
- expecter is now on my shortlist to play with. But what is the soft-assert version of an expect? A hope?
A Smattering of Selenium #101
Really? A drought for most of the week and now I’ve got a queue again in the span of 3 hours?
- Developing RESTful Web APIs with Python, Flask and MongoDB is toolchain dependent, but likely enough cross-tool-ism to be worth a quick click through
- The cool part of Jasmine Testing With Sauce Labs isn’t necessarily the Jasmine part, but the Sauce Connect Puppet part. Though Jasmine is high on my cool list.
- Google Offers All-In-One Mobile App Analytics. Woohoo! More things to slow down the mobile experience. And for us to figure out how to block to not get in the way of automation.
- WebDriverWait and Python is mine, but documents part of the driver that doesn’t have too much coverage right now
- I think there is a bit too much generalization with the usage of ‘they’ (see ‘They think it is more good than harm. They are proud how popular it is.’) but Dragon Chicken says: “Once upon a time a knight that knew only record-playback came to fight me. It was a lot of fun.” discusses one of the points that keeps the Watir and Se communities at arms-length from each other. Not that they should be…
- UI Testing at Tradeshift is a decent article on how, well, they do UI Testing at Tradeshift. Like most series, the latter ones are the more technical ones but the the first one does provide ‘the story so far.’ part 1, part 2, part 3
- Highlights a Selenium Webdriver element is another bit of code I think I’ll liberate. Well the idea at any rate since I’m not using his page model.
- Get Test-Infected With Selenium is a Python WebDriver tutorial. Not too horrific.
- A Python list-like wrapper around WebDriver’s support.select.Select class is another one of mine and is pretty out there; both in terms of what I was doing, and the level of meta I went to.
- Testing HTML5 Offline Features Against a Remote Server Using Capybara/Selenium could also be done with something like the BrowserMob Proxy, but the idea is the same. And something we’re all going to have to add to our toolkits.
A Smattering of Selenium #100
Century!
- Event 1028 – Automatic Download Blocking looks like something that could be useful to have tucked away in your head somewhere
- I think I said I wasn’t going to link to headless gem posts, but I don’t think I’ve linked to one about Cucumber. Cucumber running headless Selenium with Jenkins (the easy way); fixed
- Errorception, and things like it, are the next wave of infrastructure to come I think now that things like BrowserMob Proxy are becoming mainstream-ish-er
- I’m not really sure of the difference between NPageObject.Selenium and NPageObject. But if you are using .NET perhaps you’ll be interested enough to dig in.
- Speaking of .NET and the requisite VS environment; Integrating NAnt builder with Visual Studio to run the Selenium Web Driver tests using NUnit. Just remember, your scripts need to also be run outside of the IDE as well.
- Video! Fully Test-Driven Django With Selenium from PyCon 2012 (scroll down)
- Bromine has been released. No. Not that bromine that was associated with Selenium for years. This one is an Event.js based project for automation. Innocent naming conflict, indifference — or SEO land grab? (Just teasing…)
- Test automation at HomeSwap.com is likely watir based, but likely worth a view anyways. (Like how I say that implying like I don’t have 15 weeks of videos backlogged already…)
- What’s new in IronPython 2.7.3 is of note if you are stuck in a .NET environment but dislike it…
- What makes a good test suite? is an interesting like of respondents
A Smattering of Selenium #99
With the queue flushed we’ll go back to our regular random posting schedule
- Etsy Code as Craft: The Other Part of Software Architecture with Coda Hale – Code as Craft talks are generally good
- All the Atlassian Summit 2012 talks. I love this trend.
- Perception Of Performance discusses the whole ‘OMG CHOME IS HELLA FAST ON IOS!!!!!!’ madness. As the last line of the article says, I present to you, the power of marketing! Oh. And read Peter Kasting’s comment as well for a bit of a rebuttal.
- Uploading Files in Remote WebDriver showcases part of the Remote WebDriver stuff that doesn’t get much written about it.
- Puppet Link With Jenkins – Heck, why not?
- Automated UI Testing Done Right – for some definition of right for some person at some time in some context…
- Leap Smear is likely an example of internal smart-ass jargon that ended up sticking; Time, technology and leaping seconds
- Use Python + Selenium to Automate Web Timing takes a non-proxy route to getting page information
- bwoken 1.1 can run UIAutomation scripts in the simulator and on the device which is pretty awesome. Know what would be more awesome? If Apple did this themselves rather than the community having to figure it out on their own. But that goes for a lot of vendors with a lot of things.
- Stop worrying about Time To First Byte (TTFB) shows that, shocking!, different tools measure the same thing different ways and get different results. Never happens. Oh. and a bit of a rebuttal; TL;DR: Time to First Byte Matters, when you know what to put into those bytes.
A Smattering of Selenium #98
Happy day off Canuckistan! I’ll be in California in two weeks; here is my schedule — come by and chat
- Selenium Rc to Webdriver Migration – Part2 is included mainly for the IE bit. Busted SSL certificate? Don’t work around the problem — fix it! Can’t find an element? Synchronize properly — don’t just bap it in the face with the magic implicit wait wand…
- Google I/O 2012 Videos won’t give you the loot attendees got, just the content.
- Does WebDriver support Jelly Bean yet? /me ducks and runs for cover
- Scaling Continuous Integration – Cutting Test Time by 77% – my Spidey sense says that the next wave of tooling is about dynamic script selection, parallelization and general speediness-ing. In this article since there’s no longer a need to delay arbitrary amounts of time is the killer line.
- jQuery Core: Version 1.9 and Beyond seems rather optimistic. WebDriver should be immune [I think] though so if your scripts break, its the app! 🙂
- Myth #2 of Cucumber: It’s about Talking not Testing is outstanding. And sadly, nearly ubiquitous
- Unicode for dummies — Encoding – be afraid of any article that starts with The basic concepts are simple. Then brace yourself and read it anyways. Unicode is important.
- Cloud-powered Continuous Integration and Deployment architectures is very AWS centric (obviously given the author) but still pretty good.
- Can’t get enough of Responsive Design? How about Responsive Images: How they Almost Worked and What We Need
- This would have been more relevant last week when it was Back To The Future day, but Delorean lets you muck about with time in your Ruby scripts
A Smattering of Selenium #97
Yes. I know. I missed a day. But 13 in a row was a good run!
- Free Automated Cross-Browser JavaScript Testing is a pretty standard ‘here is how you do it’ article — until you get to the IE section. It has a trick I don’t think I’ve seen yet.
- If you don’t want to use a Proxy to generate HAR files, you can use NetExport in your Firefox profile to save things locally, or sent them to a remote server as explained in Automate Page Load Performance Testing with Firebug and Selenium. (I like the proxy route myself since it is cross browser.)
- Automatic Firefox authentication when using Selenium-WebDriver with AutoAuth is Watir-based, but would also work for WebDriver
- Introducing RoboHydra – Opera’s open-source HTTP client test tool seems to take the whole ‘take this service and stub it!’ approach
- Creating and working with parametrized test resources is a peek at what could be coming soon to a Py.Test installation near you. Also makes my brain hurt.
- Communicating with RESTful APIs in Python nicely illustrates why you should also be using Requests
- Whither NuGet and the WebDriver .NET bindings explains the whole NuGet and WebDriver .NET mess(?). Again I say, packaging is hard.
- Git rebase: be a mother, not a plastic surgeon — has git taken the place of gdb for top of the arcane knowledge food chain?
- Real-life Generators and a Peeker Too shows that I don’t know anything about Generators let alone the idea of a Peeker. Though I suspect I have needed this trick in the past.
- Remember the good ol’ days when a browser could take out your OS? They’re baaaack. Beta and Stable Channel Update
A Smattering of Selenium #96
Blech. Supposed to go car shopping today. Any car brands want to sponsor my wife with a car so I can do something productive? Worth a shot…
- jbehave-selenium is a sample project that uses, unsurprisingly, jbehave and selenium. Sample projects are outstanding.
- Just as samples are good, so are playgrounds. It’s playtime – Light Table Playground released
- And try jasmine!
- Announcing Joyride is another ‘browser automation without programming as a service’ site
- Announcing pytest-mozwebqa 1.0 has a bunch of things I need to steal, erm borrow, erm be inspired by for my stuff (Py.Saunter)
- As a builder of frameworks, Sauce labs tests with meaningful names is the sort of madness I need to deal with
- Feature and scenario outline name in cucumber before hook is in the same vein
- pyccuracy is a BDD framework for Python
- SpecLoud is the same-ish thing, but using nose
- VsVim could make VisualStudio a viable development platform 😉
A Smattering of Selenium #95
Ok twitterverse. After 2 weeks of very few links a day you explode.
- Testing JSF with Arquillian and Selenium apparently will save the world.
- GhostDriver: almost 50% is an update on something that got a bit of momentum at SeConf2012
- Building and profiling high performance systems with Iago is getting a bump by being released at/during Velocity. Not browser based, but what its being used for doesn’t need browsers.
- Testing geolocation with capybara + selenium + firefox is an interesting trick to address something I haven’t thought of needing yet.
- Run your Selenium tests in the cloud with TestingBot kinda looks like astroturfing but illustrates how to use TestingBot with Java.
- Taming the Mobile Beast is a deck [also from Velocity I think]
- Netflix open sources Asgard cloud deployment smarts is more fun stuff from Netflix
- django-skel solves part of the ‘how do I start a new project’ problem with Django
- While the BrowserMob Proxy is kinda the default proxy for Selenium, Debugging with Fiddler explains a proxy that is getting more commonplace in the manual testing world.
- SQL Fiddle has the same root word but is very different. Though I am not really sure how wise it is to let a web app construct your schema. Magic rarely results in days that don’t end in tears.
A Smattering of Selenium #94
# sudo wget coffee > adam
# sudo wget coffee > adam
Selenium-RC Commands is a mindmap of all the commands in Se-RC. (Unsurprising really.) I keep meaning to do this for WebDriver.
quacken is a script for grabbing OFX files from Quicken it seems
What’s that? You weren’t happy with one of the six PHP WebDriver clients that were out there already? Have another one — Nearsoft/PHP-SeleniumClient. It’d be spooky what would happen if we all got together on this.
Thucydides Release 0.8.26 grew Remote WebDriver support (and something to do with Spring but I don’t speak Java)
I don’t know if this is a chop or not, but
Why did the @Lenovo dev call me an asshole? Code review much? twitter.com/RussSolberg/st…
— Russell S (@RussSolberg) June 22, 2012
is hilarious. Well, from a ‘been there, done that, crap I forgot to revert’ perspective.
Yes, packaging is a hard problem. No, I don’t know how to even begin to solve it. Python Packaging: Hate, hate, hate everywhere is kinda a history lesson on what the current state of the world is in Python.
Oh, and because this is what happens on the internets, there is a bigger discussion of the previous article over on Hacker News
inproctester is a standalone J2EE app server for running HTMLUnit WebDriver scripts
Its a bit amusing [though not to a lot of people] how much love parts of WebDriver get from the world at large and how much hatred other parts get. What’s Wrong With the Internet Explorer Driver? enumerates some of the causes, why they got that way, and throws down the gauntlet to Microsoft. Who will promptly do, erm, nothing…
Accept-Charset Is No More seems like one of those browser differences that we should know about.
A Smattering of Selenium #93
Did I say 8 days in a row yesterday? I meant 9. Good thing programming doesn’t require counting…
- Passing ruby instance variables from Rspec to mix ins is the sort of nonsense you need to do when framework writing. Scared yet? (But it is fun…)
- Rspec, page objects and user flows is the experiment that likely led to the link above
- puppet-sauceconnect is a puppet module for moving Sauce’s Sauce Connect daemon onto remote nodes. Now if only someone would write the module to get the windows Java installer to run…
- Adventures In Performance Tuning is pure dog-fooding win
- The Listener Interface of the Robot Framework or ‘How do I debug this?’
- ShareTest shows Page Object for SharePoint.
- Y U NO GEMSPEC!? is one way to make sure only people who need to be running unstable code will be
- Rackspace Open Sources Whiskey, A Test Framework is Rackspace’s framework and explains why they wrote their own
- Validations are behavior, associations are structure isn’t about browsers per se, but is an interesting discussion anyways
- PHP CodeSniffer for Recently Changed Files is an interesting pre-step-zero for your build pipeline
A Smattering of Selenium #92
What’s that? Eight days in a row? That’s right…
- lolcommits seems almost funny enough to be a good idea
- A vision for Cucumber 2.0 is rather interesting
- Install Firefox on Amazon Linux X86_64 Compiling GTK+ is not something I have had to do. But then again, I haven’t tried.
- Nerrvana is yet another Selenium-As-A-Service provider. Looks like they are taking the ‘upload to our servers and run as a scheduled job’ approach rather than real-time.
- Ext JS 4.1 Performance is important stuff if you are using this toolkit. (I also like how they author is Nige “Animal” White — note that I did not add the animal part myself)
- Dunno if it is just who I follow of if the Ruby / PHP communities just don’t post this sort of thing, but How Callables Work is another geeky Python post
- Scaling CI at Etsy: Divide and Concur, Revisited is the lightsaber heuristic in action — only around Jenkins plugins this time.
- RSpec is not the reason your rails test suite is slow is a gist along the theme of ‘slow tests are slow but not for the reasons you think’
- I really don’t like integrations that are all-or-nothing from a philisophical perspective, but if you are look at using Sauce OnDemand with Behat, Behat-Sauce is what you want.
- Top 10 Reasons No One Uses Your Testing Tool from this year’s PyCon is so accurate it is spooky.
A Smattering of Selenium #91
As you’ll start to see by the timestamps of things towards the end, I’m running out of ‘new’ stuff and am pulling from the queue now.
- Fairly certain I’ve linked to this before, but seleniumwrapper adds some syntacitcal sugar around the Python bindings. Though not sure that it makes it clearer to me.
- What the heck is an xrange? is today’s Python internal geekiness post
- Functional Automated Testing Best Practices with Selenium WebDriver is the video version of these slides (wow I dislike this html slide deck trend…)
- All the WWDC 2012 Session Videos are now up. Naturally there is nothing on automation or testing, but its not like app developers do any of that stuff anyways 🙂
- All the Slides and Videos from this year’s Watir Bazaar (which is likely more valuable than the WWDC stuff…)
- Avoiding Brittle Automation is a lightning-ish talk from STPCon in New Orleans back in March
- Using a Headless Browser in .Net might be the first article I’ve seen on this for .NET. I’m officially ignoring them in Python…
- Cucumber-Crash-Course is healdless cucumber/capybara. Getting close to ignoring Ruby headless too.
- The Robots are Taking Over – reading between the lines, if you are automating the fun stuff you are doing it wrong.
- Automated Deployment of PHP Applications using git looks generic enough. You always have to watch that people actually mean ‘git’ and not ‘git as implemented by the kids at github’
A Smattering of Selenium #90
Eventually I’ll get back on the once-a-week schedule. But not today!
- Falsehoods Programmers believe about Time. Time is hard; let’s go shopping!
- Speaking of hard. Concurrency is not Parallelism (it’s better) — also has gophers
- Did Netflix actually Open Source Army of Cloud Monkeys? I don’t see anything on their github account (and that is the trendy place to release stuff these days)
- Need I say more?
- I’ve used this trick a couple times Python introspection – how to check current module / line of call from within function
- Ah-ha! PHP is not the only language with multiple bindings! webdry is a Python (jquery-inspired) wrapper for DRY:er access to the Selenium WebDriver.
- Integrating jQuery With Selenium talks about the js executor and using jquery instead of the browser’s native locator stuff. I’m not sure I would do this, but it seems like one of those things that people are want to do…
- I really don’t know the backstory to Record! Playback? #Fail but it is kinda amusing
- Checking as an enabler for testing will annoy some since it follows the ‘testing vs checking’ distinction, but is bang on.
- More reasons to go shopping! Pragmatic Unicode
A Smattering of Selenium #89
Figured I would get this out before the computer goes in for surgery.
- Automate Page Load Performance Testing with Firebug and Selenium is not a new topic, but a timely one for me
- Speed up your features with a backdoor login route is not a recent post, but something I’ve had to explain to people at least once a week for the past month, so…
- RSpec’s New Expectation Syntax explains not only the ‘what’ of the new syntax but the ‘why’
- Slides & Videos from LDNSE #6 does not falsely advertise itself
- Python Timer Class – Context Manager for Timing Code Blocks reminds me that I need to use Context Managers more often
- Overloading Python list comprehension is an interesting little experiment. Well, depending on your definition of interesting I suppose
- I posted the about how Python creates classes last week, and going through the queue of things I have to post came across Python object creation sequence from the same blog
- Visual Studio 11 Fakes Part 1 – Stubs discussed the Fakes framework which appears to ship in VS11. Stubs. Are. Awesome. Oh, and it took too much work to find it, but Visual Studio Fakes Part 2 – Shims is the follow-up. Actually, if you are VS all day there are a bunch of neat things on that blog.
- I don’t own a copy, but The Grumpy Programmer’s Guide To Building Testable PHP Applications but the section breakdown seems like it would be correct.
- Test on Real Mobile Devices Without Breaking the Bank has some food for thought. And its own quirky definition of ‘bank’. Especially given that the half-life of a mobile OS is something like 7 months it seems.
A Smattering of Selenium #88
Five days and fifty links later…
- I’m working on a larger-ish rant on headless browsers, but until then there is Jasmine Headless WebKit
- Not 2. Not 4. But Three ways to generate test data for your ruby automated tests
- Downloading things is a pain, but Waiting for watir-webdriver downloads (and determining the file name) has a solution
- Use classes in Python? Of course you do! Under the hood of Python class definitions — but as the warning states, If the prospect of pondering the metaclass of the metaclass of your class makes you feel nauseated, you better stop now.
- And after you read that, you’ll be set to understand what Online Python Tutor tells you. OK, its not at the same level of insanity, but…
- WatirSplash is another framework to steal ideas from 🙂
- Python Deployment Anti-Patterns likely applies to more than just Python
- Don’t Build APIs… is a nice little rant
- ASP.NET MVC + Selenium + IISExpress
- Being good at waiting – Using Selenium to test Ajax-intensive pages from SeConf2012
A Smattering of Selenium #87
Avoiding punching things about software packaging by doing the 4th!!!! smattering in row.
- Python Decorators is an attempt at picking up a stick the right way
- A lawnchair is sorta like a couch except smaller and outside. And a persistence solution for HTML5 apps. If your apps persist data, checking them in the browser is. Not. Enough.
- Atlassian is building a performance tool off of WebDriver including Page Objects called soke
- I wonder if we should fail scripts that use vendor prefixes…How to Unprefix -Webkit-Device-Pixel-Ratio
- The last paragraph in Android unittests now have LOLcat is the sort of thing that more projects should do
- tl;dw: Speedily practical large-scale tests — of course, browsers are going to slow things in any event, but things to think about…
- Continuous Deployment as a Remedy for Burnout — hadn’t thought about it this way, but yup. It is.
- Repository Structure and Python is full of opinions, but that’s ok, opinions are good.
- Skewer – is a tool for provisioning cloud nodes with Puppet. Which is how you should be making sure your bits are on the server. (Or Chef, or CfEngine, or…)
- Calabash-Android is I think the ‘new’ way of driving Android apps. It keep changing…
A Smattering of Selenium #86
Look at that! 3 days in a row, and the boy isn’t even gone to school yet and I’ve hit ‘publish’
- Most people know about this already, but SeleniumConf has its own YouTube channel — which has all of the 2012 videos on it now.
- How to Dynamically Add Android Support to Selenium Server at Runtime
- Python Iteration is a beginner talk about, well, iterating in Python. In ways that you would expect (for) and ways that you wouldn’t (generators)
- Sleepy Automated Tests talks about polling loops. I like the use of the phrase periodic comatose states
- Wait! Using Selenium Web Driver with jQuery animations could be something you want to stash into your base classes if you are using JQuery
- If you are using Robot Framework, robotframework-httplibrary and robotframework-requests could be of interest to do all the things on your site that don’t need a browser to actually be involved
- I wonder a) how long it will take them to decide on what HTTP2 looks like, b) how long the conversion will take? (IPv6 anyone?) See the HTTP2 Proposals to see what the next progression of the web’s transport layer could look like
- Driving your iOS app from CoffeeScript? Sure! Introducing Bwoken
- Selenium and Quality Center Integration using NUnit could be valuable for .NET shops wanting to integrate things with QC. Though looking at the arrows the scripts are still run from VS — there is money to be made running them from QC and not just using it as a result repo.
- PHP Hammer is just about the best response to snark ever
A Smattering of Selenium #85
Two days in a row! Take that doubters!
- Automated Software Testing: An Example of a Working Solution is an interesting take on designing an automation system for the US DoD. It sure as heck isn’t how I would do it, but I can understand how this context might lead to this solution. And it seems like it is Eclipse based which is even worse a decision. 🙂
- 5 Tips on Finding a Mobile Job in Toronto is pretty focused, but also applies to non-mobile jobs outside of Toronto.
- Application Cache: Douchebag is another one of those things you need to grok if you are going to automate HTML5 goodies
- Before you run your automation against an Android app, you might want to run Android Lint against it.
- wd-sync is a synchronous version of the wd javascript bindings.
- Abmash aims to deal with the element location problem only using the visible cues a user could see. In my experience, this leads to scripts that work fine — until you need to deal with multiple languages at which point it falls on its face. Hard. But…
- Improving your code with modern idioms is Python focused and is something I need to keep open whenever I write new code…
- More on Jasmine – Confidence.js
- Gas Mask seems like it would be pretty cool. There are of course some bugs, and the project seems rather dormant. Oh. And writing Objective C is a pain… but I really want something like this!
- Automatically download and install VirtualBox guest additions in Vagrant. Yup. That’s what it does.
A Smattering of Selenium #84
What? Its only been 3 months since the last one. Sheesh.
Sorry about being a G+ article, but DOM Ready discusses briefly about how to build your page in terms of order of events. Of course, if you read the comments it is very much buyer beware, but…
I’ve been fixating a bit on operational dashboards the last little while and Enterprise Operational Intelligence has a couple good ones
Looking to use BrowserID? There’s a Page Object for that.
Lessons from Etsy: Avoiding Kitchen Nightmares starts with an oven belching flame and gets better from there
Roll your own page objects, is, for the record how I do Page Objects too. Well, aside from using something like Cucumber as just a functional runner
Rachmaninov’s Third Piano Concerto, Played by Selenium is just cool
Splitting Robot Framework tests into batches for parallel execution is one solution to the ‘my batches were balanced but now they are not’ problem
The Long Tail of Technical Debt shows one way of parsing run information and suggests what do do with this particular outcome pattern
Bugwatch is magic, but magic can be fun too! Well, sometimes.
And lastly,
When test automation is made a goal rather than a tool, quality suffers. — Ben Simo @qualityfrog@mastodon.social (@QualityFrog)
Announcing Selenium 2.22
It’s been a while since the last Selenium release, but I’m happy to announce that Selenium 2.22 is now available for download. This is a big release for us and features two major changes.
The first is that Selenium 2.22 is the first version that requires Java 6 in order to run. This has been the case for the Selenium Server for some time, but this is the first time the client code has required Java 6. Since Java 5 was “end of lifed” in 2009, we don’t expect this to impact many users.
The second major change is that we are now providing a standalone IE server for use with the WebDriver API, similar to the one used by the chrome driver. You can get it from the normal download page. This will allow us to update our IE support independently of the rest of the library (again, mirroring how Chrome is supported) For now, there’s a legacy fallback mode you can use that’ll use the same DLL we’ve always used which can be activated by setting the DesiredCapability “useLegacyInternalServer” to boolean “true” when requesting your IE Driver instance.
Of course, as well as these major changes, there’s the usual host of updates and improvements. We’re continuing to refine the new SafariDriver, and we’re happy to announce native events for Firefox 12. You can check out the other updates in the CHANGELOG.
Selenium Conf: Community
In this series of blog posts we’ve introduced one of the keynotes and talked about some of the great presentations you’ll see at Selenium Conf ’12, but so far we’ve missed the most important aspect of the entire event: you.
For me, one of the highlights of any conference is the chance to meet other members of the community, make new friends and talk about all things interesting (and perhaps even tangentially related to the conference!) To help this process along, we’ve avoided scheduling everything down to the last minute. Instead, we’ve left plenty of time in the B track for an unconference. You’ll get to pick the talks and have a chance to have your voice heard. Last year, there were some great talks on the equivalent track, and I think we’ll see the same this year too!
If the idea of standing up and talking for 30 minutes in front of an audience seems a little daunting, you can dip your toes in the water by volunteering for a lightning talk: 5 minutes of concentrated goodness! Come prepared with a topic and perhaps a handful of slides 🙂
It’s not all formal talks, either. As well as the many members of the selenium community who’ll be attending the conference, there will be many of the core development team. There’ll be a chance to ask Simon why we’re not using git yet, get feedback on some of the ways you’re using Selenium, or just chew the fat. There will be a drinks on the 17th at a London pub, too.
I’m really looking forward to meeting all of you, and hearing the tall testing stories, and finding out how you’re pushing the boundaries. of web automation. If you’ve still not bought a ticket, there’s still time to. Come along and join us! If you’ve already bought your ticket, what kind of things are you looking forward to?
Selenium Conf: Speakers
I may be biased, but I think Selenium Conf ’12 is going to be great. There are talks aimed at every level of Selenium user. We’ve got experience reports, so you can learn from the trials and tribulations of others. There are talks about using Selenium in unusual ways, such as performance testing, or automated security testing, so you can see new ideas and approaches.
There are technical talks, such as the one Jim Evans is giving on lessons learned from developing the IE driver, so you can learn a little bit more about how Selenium works and Luke Daley’s talk about Geb is bound to be fun.
If you’re a fan of Selenium IDE, then the talk on the SauceBuilder will be a “must see”. We’ll also have the current owners of Selenium IDE attending the conference, so you’ll get a chance to pick their brains on the future of the tool.
If you’re someone who enjoys living in the future, then the mobile focused talks, such as Andreas Tolf Tolfson’s talking about OperaDriver on mobile devices, or Dante Briones talking about testing mobile apps on iOS will be interesting. And Jason Huggins will be talking about robots. What’s not to love?
Better still, we’ve left space in the schedule in Track B for an unconference. If you put forward a talk this year that wasn’t accepted, or if you’ve got something you feel the Selenium community should hear, now’s your chance! If you’ve only got a little to say, or just want to make a single point, then you’re really going to enjoy the lightning talks!
All of this is available for the cost of the ticket, which you can still buy. Don’t wait! Come to #SeConf!
Selenium Conf Keynotes: Liz Keogh
The tickets for Selenium Conf ’12 are still on sale for about another week, so there’s still time for you to buy your tickets. In case you’ve not already gone to the conference site to see the great line up, this week we’ll be letting you know what to expect!
I’m really pleased to announce that Liz Keogh, who is a core member of the Behaviour Driven Development (BDD) community and is one of the stalwarts of the London Agile community, as well as a haiku poet, is going to be one of our keynotes! If you’ve ever seen Liz speak then you’ll know just how much a treat we’re in for. She’s got great things to say and always says them in a thoroughly engaging way.
Liz’s keynote is titled “How to Test the Inside of Your Head”. When we test code and find it doesn’t do what we thought it did, we change it. But, she asks, wouldn’t it be great if we didn’t have to write the wrong code in the first place? In the talk, Liz will show how we can use examples and scenarios to break the models we make inside our own heads, helping us to avoid premature commitments and their follow-through – whether in code or in life.
I’m really looking forward to it! I’m sure you are too.
A Smattering of Selenium #83
Well, might not be in Florida, but how about them juggernaut Blue Jays?
- WebDriver: capture JS errors while running tests is a JS way of capturing JS errors on a page
- Selenium reports – our take is a pretty detailed report on one company’s drive for prettier report output
- Hmmm. How do we get a Selenium coderwall achievement?
- page-objects is A basic framework for running automated tests using WebDriver, TestNG & Gradle
- selenese-runner is a js runner of Selenese scripts including a JUnit style reporter. Could be a baby-step towards getting Selenese stuff into a CI server
- I wonder how much time can be shaved off the average suite by implementing HTTP Compression correctly; Lose the Wait: HTTP Compression
- LessPainful looks interesting for mobile stuff. It uses a Cucumber variant so might have Se under the hood there somewhere.
- What? You don’t read Etsy’s ‘Code As Craft’? Here is a good starting point; The Etsy Way
- red, green, refactor – the tools for success shows just how large the toolchain can become. Oh. And step six is critical.
- And remember kids, there’s no kill switch on awesome
A Smattering of Selenium #82
Someone explain to me why I’m in Toronto and not Florida?
- Couldn’t make it to Pycon last week? There are videos of the session!
- Release Histories for all Major Browsers is just interesting from a historical perspective
- Interacting with web pages using Selenium WebDriver for C# is pretty basic but does include the all-important security settings to make IE behave-ish
- page-object 0.6.2 released is not just a release announcement but has some nice examples of page objects in ruby
- autoenv is a magic hack for having auto-firing scripts at a directory level. Gotta love projects that advertise as being pretentious
- Four Principles of Low-Risk Software Releases is important.
- Microsoft Details Its Browser Performance Testing is good if only for the photos of their lab
- Sharing a WebDriver across TestFixtures seems like a bad idea, but solves his specific problem. (Could it be solved with a specified profile rather than a fresh one every time?)
- Browser Specific TestFixtures Sharing Tests is from the same person as above and shows how to abstract different browsers from the script by moving the browser choice up to the suite level. Not sure how this would scale though…
- I would really like to see less ‘howto’ blog posts that repeat the same basic information and more experience reports like deja vu: code, culture, and QA. Oh, and it serves as a nice reminder that automation is more than just regression; its about producing information that starts conversations
- Page Object Pattern and PageFactory doesn’t look too bad — aside from not having a code formatting plugin in their blog
- You never know when Using Travis CI for building and testing Firefox addons will be useful
- capybara-firebug is a a dead-simple way to run Capybara-based Cucumber scenarios or RSpec request specs with Firebug enabled under the selenium driver
- prickle looks like it is implicit waits for capybara
- How to Use RVM is a screencast on, erm, well, how to use rvm
- Of course, if you are on Windows then rvm won’t work for you. You need pik
- Testify is a microtesting framework for PHP that is trying to make their script JS-like
- Every Little Things Capistrano Does Is Magic aside from making my have a Police song rattle through my brain explains some of the not so obvious parts of capistrano
- It has been far too long since I made a pirate reference here, so An HR Lesson From Steve Jobs: If You Want Change Agents, Hire Pirates. I should have named my company ‘International Automation Pirates’. Ah hindsight.
- JSErrorCollector solves for Firefox something I think is missing from Se — which is the collection of JS error messages from the browser. (And it is missing from it for a reason; browsers don’t always expose it. Maybe we can get that into the W3C spec…)
A Smattering of Selenium #81
Its March Break (at least here) which means its also Catch Up Week. An extra long Smattering every day!
- Generally I reccomend to people not to automate file uploads, but sometimes they are unavoidable. Selenium Tips: Uploading Files in Remote WebDriver explains how one might go about things in WebDriver
- HTTP Status Cats isn’t new, but is still funny.
- httpstatus.es has the same information, but organized slightly differently. Now for someone to make a mashup of the two
- Coypu appears to be a .NET wrapper around WebDriver
- From this year’s CodeMash, Continuous Integration in the Mobile World
- Like rake but like Python more? Now you can use shovel
- Plasma is another C# framework that has WebDriver-ness in it for automating ASP.NET apps
- Zonebie is a gem that can inject different timezones into your scripts to see if they are sensitive to that sort of thing.
- Tool mania is a useful reminder that sometimes Se can be a wrench.
- What’s your team’s Precommit Process?
- DevOps DNS for Developers – Now There’s No Excuse Not To Know because there is now no excuse not to know
- Toying with Context Managers explains this bit of Python syntax sugar
- If you are looking to raise the ire of the Se devs, Xcode just doesn’t work worth shit is a good example. Not that I recommend it. But yes, I did laugh when reading it.
- Does your app have a REST API? Do you test it using Se? Stop! Its not the right tool. Once you understand REST you’ll see why and RESTful API Server – Doing it the right way (Part 1) does a decent job explaining things.
- (Really Really) Understanding traceroute is one of those everyday tools that people think they understand, but often don’t.
- No Wrong Answers: Questions for Pre‑Clients apply just as much for automation projects
- Web-Drawing Throwdown: Paper.js Vs. Processing.js Vs. Raphael illustrates these three canvas libraries. Now, who is going to produce the demo Se scripts to interact with these. Canvas is coming and its kinda scary.
- Automating Web Performance Stats Collection in .NET talks about the BrowserMobProxy with .NET
- Serializing python-requests’ Session objects for fun and profit is a bit of code spelunking and a useful bit of code as well.
- Processing Text Files in Python 3 is going to be more and more important whether we are ready or not.
Selenium Conference 2012
Good news, everybody! Selenium Conf ’12 is getting closer! We recently selected the speakers for the conference, and it’s going to be a great mix of talks, spanning the full range of subjects from the very practical to the deeply technical. I’m promised that there will be robots.
Selenium Conf isn’t just about the planned talks, it’s also about the community. On the final day, there will be an unconference, so if there’s something you feel passionately about and feel the world should know, now’s your chance. You’ll not only have a chance to talk to and meet other selenium users, but also many of the core team members.
The conference runs from the 16-18 April in London. Tickets are still available! We’re looking forward to seeing you there.
Support for Ancient Browsers
The first code checked into the Selenium project’s public repository was in November, 2004. We’re now in 2012. In the intervening years there have been many browsers released. The last browser we officially stopped supporting was Firefox 2.0, and it’s time to review the list of browsers again.
We periodically review the list of supported browsers as the more changes there are between the oldest version of a browser that we support and the most recent, the harder it is for us to add new features and maintain those that already exist. Balanced against the cost of maintaining the selenium code base itself are your tests; we know that your users might not be updating their browsers to the latest and greatest, and we know that you’ve still got to prove your app works on all the browsers that are important to you. That’s why what’s below is just our plan, and we’re talking about it now to let you have your say.
Looking at the market share of the browsers out there helps us make an informed choice about what it makes sense to support. This will most likely mean:
Firefox: the Firefox market appears to be split between those on 3.6 and those on the new rapid release schedule. Given this, we are thinking of officially supporting Firefox 3.6, and the last, latest and next release of Firefox (currently Firefox 9-11) as well as any ESR releases. The market share for Firefox versions 3.0 and 3.5 is tiny, and the effort to keep them working with selenium is disproportionately high.
Internet Explorer: Despite Microsoft’s efforts, IE 6 is still a popular browser, particularly in the workplace. We will continue to support IE versions 6 and up.
Safari: Safari 3 is now ancient and has been superseded by newer releases. We plan on only supporting Safari 4 and 5.
iOS: We’ll continue to target the most recent iOS release.
Android: Due to some technical limitations in previous Android releases, we are targeting Ice Cream Sandwich and onwards. We will continue to make available the testing framework for Froyo, but will not be making any changes to it.
These are only our plans. If you really need those browsers, and (better!) can help us maintain support for them, then please let us know.
You’ll notice that Opera and Chrome are not listed above. Since Opera and Google now maintain the drivers for those browsers, they are best placed to decide which are the supported versions, but in summary, Google support the major Chrome release channels (stable, beta, dev and canary) and Opera suggest using Opera 11.6+.
A Note About the Cybervillains SSL Certificate
If you’re using Selenium RC to test websites hosted on a secure site (accessed using a URL starting with HTTPS), we strongly recommend that you upgrade to Selenium 2.19. This is because the Cybervillains certificate in previous versions will expire soon, and has been replaced in 2.19 with an updated one.
Our thanks to Patrick Lightbody, Ivan De Marino and Mark Watson and Neustar for taking providing the new certificate and the patch!
A Smattering of Selenium #80
I should have learned not to boast about getting caught up with links.
- Automating BrowserID with Selenium is pretty awesome. (As is BrowserID.) Now if this was only installable via pip or easy_install…
- Ruby Trick Shots – heed the disclaimer; not an exercise in Ruby best practices
- Keep It Functional – iPhone Test Automation talks about another automation framework for mobile. At some point Selenium is going to grow Objective-C bindings I fear.
- Requests for Python is fantastic. Requests for PHP looks to be equally so. (I suspect my php webdriver bindings are about to become a much larger fork of the Facebook ones.)
- Is Test Automation a “Project”? – hint: it’s not.
- Keeping Selenium Tests 100% Blue is a video of January’s SFSE. And Selenium Meetup West Coast Style is a rebuttal.
- Selenium’s Sweet Spot: Preventing Catastrophes shows that there are still people who do not watch for Black Swans. Automation does not prevent catastrophes. Well, at least ones that you are not looking for already.
- Automate Salesforce Administrative Tasks with Selenium has the results of the contest they ran.
- ErrorList object for use in TestNG/Selenium testing is a soft-assert implementation
- Iterations has an outstanding time-lapse of how the Pycon US logo was designed. Someone should do this scripting out a website.
And my post that I’m going to link against is a bit of a rant around how to choose selenium training. Though it has also been pointed out that a lot it applies outside the scope of Selenium as well.
Announcing Selenium 2.19: the Prancing Unicorn release
You might be pleased to hear that Selenium 2.19 has been released (download it from here!). There’s one big user facing changing that we’d like to tell you about: the webdriver-backed selenium can now be used in supported languages.
By providing this capability, it’s possible to migrate from RC to the WebDriver APIs without rewriting all your tests in one fell swoop (which must be a Good Thing, right?) An example of how to use it in Python would be:
driver = RemoteWebDriver(desired_capabilities = DesiredCapabilities.FIREFOX)
selenium = DefaultSelenium('localhost', 4444', '*webdriver', 'http://www.google.com')
selenium.start(driver = driver)
Provided you keep a reference to the original webdriver and selenium objects you created you can use the two APIs interchangeably. You’ll see that the magic is the “*webdriver” browser name passed to the selenium instance, and that we pass the webdriver instance when calling start().
We hope you like it!
PS: I have no idea why this is the Prancing Unicorn release, but it’s been a while since we named one 🙂
A Smattering of Selenium #79
The only links left now are ones currently open in tabs right now. Hurray!
- November’s SFSE was Continuous Deployment At Mozilla: slides, video
- Practical Web Test Automation is a book available in both a free and paid editions. I haven’t looked at it so can’t comment how good or bad it is.
- The Why, What and How of Software Test Automation isn’t too horrible, though I don’t like the word ‘guideline’ and of course the measurement section at the bottom is complete hokum.
- Internet Explorer for Mac the Easy Way: Run IE 7, IE8, & IE9 Free in a Virtual Machine seems a bit sketchy in terms of license legality, but…
- PageMapper is a bit of template magic to create Page Objects
- Web Consistency Testing is starting to push what can [should] be done with Selenium
- Taking Automated Tests Off The Pedestal erm, takes automation off its pedestal
- Monkey-Patching iOS with Objective-C Categories Part I: Simple Extensions and Overrides is a technique I haven’t seen before.
- A Tool’s Tale would be better with Sebastian in front of it, but is still useful as a standalone deck.
- Introducing the software testing ice-cream cone – Dangit! Now I want ice cream.
And my post this edition is WebDriver and Meta Tags.
A Smattering of Selenium #78
Look! A light at the end of the tunnel!
- ASP.NET MVC + Selenium + IISExpress – You don’t see too many Windows how-to’s. Not sure if they just don’t get tweeted about or is more a sign of that community.
- Write Logs for Machines, use JSON is a nice idea. I wonder if (when) the major CI containers will land on a pseudo-standard for consuming JSON
- Remote File Upload using Selenium 2’s FileDetectors shows yet another area I need to figure out in WebDriver (not Selenium 2 as Santi so stubbornly referred to it as 🙂
- Janky is GitHub’s CI server. Seems like this is the current cool route; that is, implementing your own rather than building off of one of the major existing ones. Which I suppose makes sense.
- From Dependent Tests to Independent Tests to Independent Assertions has a nice refactoring trick to clean-up your scripts
- I’ve posted how to inject Sizzle into your WebDriver scripts at least once, and here is another time. Injecting the Sizzle CSS selector library
- And if Sizzle isn’t your thing, WebDriver Plus has JQuery-esque DOM Traversing
- Important notice regarding Java packages in Partner archive is something to keep in mind if you want to run the Selenium Server on Ubuntu
- Looks like ShingingPanda is the Python equivalent of CloudBees, and has instructions on how to get Selenium running on it in ShiningPanda is Selenium ready!
- Articles that lead in with Boy. That was a headache. are usually good ones to link to. WebDriver, Webdriver, and more web driver. This one is about the WebDriver iOS driver.
And today’s post of mine is WebDriver and Cookies which explains how, well, cookies and webdriver play together.
A Smattering of Selenium #77
No. Really. A Smattering every day this week and I’ll have the link queue cleared.
Go!
- Mentioned in #74, Automating Web Performance data collection with BrowserMob Proxy and Selenium is more than just a link to GitHub
- Of course you are using the excellent Requests module rather than urllib2 which ships with Python; but are you using envoy instead of subprocess?
- Grabbing Screenshots of Failed Selenium Tests uses some JUnit magic. Also, gotta love articles that end in How easy was that?!
- Rackspace Open Sources Dreadnot – Aside from an excellent name, its based on Deployinator which is pretty darn cool and I saw in action the other week
- Geeks and Repetitive Tasks. Umm. Yup.
- Officially Introducing “SST” that this link is here is evidence that I should go through the queue from the top of the list. There was a screencast on SST in #75.
- 7 Deadly Sins of Automated Software Testing – nice article and as someone who has done linocut before, that’s an impressive print that is featured.
- Introducing Selenose is a Selenium plugin for Nose
- Two useful Firefox plugins I stumbled on are FirePath and Firecookie
- Sorting a million 32-bit integers in 2MB of RAM using Python is this edition’s geeky investigation
One thing I have done in these Smatterings is to not link to my own stuff, but am going to start linking to an article or two at the bottom of the Smatterings (unless there is general community backlash against the idea).
- In Introducing PHPWebDriver I unleash some code upon the world
A Smattering of Selenium #76
Post ten links, find seven more to add to the queue.
- Selenium Page Objects and Abstraction is one person’s attempt at writing down how they describe POs
- Running Geb specs using a separate driver profile to test mobile views in Grails shows how to create a custom Firefox profile in WebDriver
- Django and Selenium on Jenkins/Hudson (Headless) is yet another tutorial around xvfb but has a trick at the end I don’t think I’ve seen
- Python’s concurrent.futures is today’s analysis of building a script
- Browser Sedimentation has an outstanding diagram of whats what in a browser. I know I’ll be referring back to it.
- Airbrake seems like it would be useful — especially once you start parallelizing execution across instances
- Whole-team Test Automation: Making the Move offers some tips for implementing it on your team — at least according to the blurb at the top
- Hey look! Another xvfb think. Can we please just put this into the Se docs already?
- Selenium Webdriver, Perl, and Saucelabs also acts as a sample for the (a) Perl WebDriver binding too
- Convincing management that cooperation and collaboration was worth it – dark launches, config flags, oh my.
A Smattering of Selenium #75
And home. Which mean 100% more internets! Or at least 98% more.
- As things like native-driver become more prevalent, knowing how to do Continuous Integration for iOS projects with Jenkins CI will become more important
- Chocolatey seems like a nice and big step towards managing Windows build slaves
- SST (Selenium Simple Test) comes out of Ubuntu and has a quick introductory screencast.
- Automate Salesforce Config Changes with Selenium is a contest. But only for Java so I have no interest in it. Submissions are due in two days. Could be fun.
- cssify is a great little app for converting xpath to css. Now to see what sorts of devious xpath we can put in and blow Santi’s mind with bug reports. 🙂
- Continuous Delivery with Bamboo Stages – I normally call these ‘chains’ but nicely shows how to chunk the march to production. It also cracks me up that the corporate twitter feed has the upgraded beer cart photo in the sidebar right now.
- One talk I skipped at Codemash the other week was on Apple’s UI Automation stuff. I suspect this is the low-level implementation of things like native-driver which is valuable to have at ones fingertips.
- While not automation related directly, if you are automating Android stuff you should also be looking at the Android Design site to understand the idioms and such that the platform thinks you should be using
- The road to faster tests is a fantastic write-up of an investigation into why their scripts were so slow. I’ve been doing this a lot recently. Well, investigating slowness at least.
- I actually got the above link from How We Reduced Our Rails Test Runtimes By 10x which is an even larger investigation write-up.
A Smattering of Selenium #74
It is kinda hard to do these without reliable internet… dear hotels, fix. your. internet.
- Testing Facebook Login with Selenium has some nice Python helpers to dealing with Facebook auth
- VBS WebDriver – ummm, wtf?!
- Python Browsermob Proxy Library – the best code is code you don’t have to write yourself. (Thanks David!)
- I saw A Few of My Favorite (Python) Things at CodeMash last week and learned a few things
- def test = new BDDMadeEasy(Selenium,EasyB,Groovy) is a writeup from a recent presenter at the Greater Boston Selenium User Group
- Receive SMS alerts when a Selenium test fails seems like both a good idea and a bad one at the same time
- Have you always wanted to automate minesweeper? is such a good contest. We need more of these.
- Case Study: Building the Stanisław Lem Google doodle is interesting. And likely useful for others doing JS heavy stuff
- A neater way to use reflection in Java seems trick to me. Or might be utter hackery to someone who actually knows Java
- The beginning of a standard for browser automation makes me have this song in my head
A Smattering of Selenium #73
Two Ruby gems
- rwebspec-webdriver – Executable functional specification for web applications in RSpec syntax and Selenium-WebDriver
- loadable_component – Ruby implementation of LoadableComponent
A three-parter on building a framework showing there is more than one way to skin the framework cat.
Another three-parter on Is the Cost of Continuous Integration Worth the Value on Your Program? – part 1, part 2, part 3
31 Days of Testing – in 23 parts (though I expect the series will finish after CodeMash)
The secret history of “about:jwz”, “about:mozilla” and the Netscape Throbbers is just a fun browser history read
Pulling Jenkins’ strings with Puppet looks like a way of managing Jenkins instances through puppet — which is darn cool.
Given When Then is a BDD tool for Node.js which does its post-conversion-magic runs using WebDriver (please stop calling it Selenium 2!) and Sauce Labs
Selenium Utility Funcs is a list of python helpers (with slightly friendlier names) for WebDriver
Converting Gems shows a neat trick for converting ruby gems into .deb files so they can be installed and managed via apt
Since we all care about the web, Move the Web Forward – You love web standards. You want to give back to the community. Curious about where to start?
Selenium 2.16 Released: Welcome to 2012!
It’s been a while since we last blogged about a Selenium release. Since the release of 2.0, we’ve been attempting to give you a fresh and shiny Selenium release every week (though, in reality, we’re managing to get you one every 10 days on average). This allows you to pick the version that’s most suitable for you and your teams, but provides a route for quick feedback on how we’re doing. I think we’ve now ironed out a lot of the initial problems and bumps we ran into, so we are extremely proud to announce the release of Selenium 2.16.
If you’re unsure about what’s been happening since the last time we announced a release here, the best place to look is our changelog. The most notable feature in 2.16 is better support for Firefox 9, but if it’s been a while since you’ve last updated, we’ve been beavering away on bug fixes and making existing features work as flawlessly as possible. Now’s a great time to update!
One of the key tools we use for assessing whether it’s okay to push a release is our continuous build. This watches for each and every change made to the project’s source code, and runs an increasingly vast suite of tests to verify that nothing has broken. Our friends at Sauce Labs have been extremely generous in providing support for this, and have worked closely with us to make the build as stable and quick as possible. Special kudos and thanks to them!
A Smattering of Selenium #72
January means its time to escape from under the deadlines I found myself under during December so some of this stuff is a month old (or older!). Hopefully it is still interesting though.
- Localizing automation well is something I’ve seen people struggle with. Creating Multi-Language Web Applications with Zend_Translate is a possible solution for PHP folks.
- Using Spinach with Selenium and of course Spinach seems to be a different implementation of Cucumber. (And yes, I’m sure that’s a great oversimplification.)
- Introducing Android WebDriver more or less made the selenium search I have for twitter useless for a day-and-a-half with all the retweets.
- Selenium Webdriver – Wait for an element to load shows the difference between an explicit and implicit wait
- Testing GWT Apps with Selenium or WebDriver – take note of problem 3. Friends don’t let friends use GWT…
- The developer’s guide to browser adoption rates is the sort of thing anyone doing browser automation needs to know about
- integrate your selenium test cases into nagios – this is something I keep thinking I should try out.
- Continuous Integration Principles–Task Size Rules has a diagram that seems about right — even if I haven’t really thought about it in great depth.
- Another robust way of how to locate ajax elements using Selenium 2 + webdriver kinda looks like a re-implementation of the WebDriverWait stuff
- A tale of three ruby automated testing APIs (redux) was in an earlier queue, until he pulled it down. Now that its back, its back here too.