David Piper Front-End Developer, Atlassian

BIO: I’m a Quality Engineer turned front-end Javascript developer at Atlassian in Sydney, Australia. I’ve designed and managed CI pipelines, both backend and frontend, and I have considerable experience implementing Pact testing systems. My most recent solo project has been the development of testing libraries that make Selenium WebDriver and similar browser-based testing tools obsolete.

Presentation: A Modern Javascript Frontend CI Pipeline

The design of CI pipelines is tightly coupled with the tooling and technology stacks they test. In an ideal world, pipelines would run on rock solid infrastructure and execute fully deterministic tests, resulting in the release of a product with a guaranteed quality bar.
In reality, infrastructure, tools and tests can all be flaky, not only slowing down pipelines with needless failed executions, but also reducing confidence in the final product. Integration tests are notorious for being the flakiest of tests, primarily due to dependencies on live or mocked external services, and the use of Selenium WebDriver for UI testing.

WebDriver is not an intrinsically bad testing tool. However, tests must be carefully written to avoid race conditions, cater for unexpected Javascript side-effects, and handle backend service delays due to constrained resources in a CI environment. As pragmatists, we often tolerate occasional flaky tests in our pipelines, but left unchecked, sources of flakiness can lead to significant problems. Hourly deployments in a continuous delivery system can slip to days or weeks, and without analysis, flaky tests can quite easily be failing tests that sometimes pass, rather than successful tests that sometimes flake.

However, with the correct tooling, infrastructure and testing libraries, sources of flakiness can be eliminated completely. In this talk, I will detail a comprehensive web frontend CI pipeline built on solid infrastructure and hardened against external dependencies. Most significantly, I will demonstrate that a modern CI pipeline can eliminate the need for WebDriver completely, while still guaranteeing the same level of quality and confidence we expect from UI testing.