Toggling Ruby scenarios in Drone using secrets

TiL how to toggle Ruby scenarios to be run using CI pipeline secrets Scenario In a relatively niche scenario, we have functionality that is being temporarily removed while new code is being developed. While we still want to keep our current scenarios for function X to use them again when it’s reintroduced, if they are left to run in our pipeline, every build will fail until it is reintroduced again....

November 7, 2024 · 4 min · 707 words · Leighton Taylor

TiL: Adding numerous tags to ParallelTests in cucumber elegantly

Trying to run tests in parallel in your CI/CD pipeline is tricky at the best of times, but what if you have tests which should only be run in a certain environment and not as part of the CI build stage? It is fairly simple to just tag a feature file with a unique tag that can then be passed to the bundle exec rake command in the functional-tests step, as an environment variable....

July 2, 2024 · 3 min · 580 words · Tomos Griffiths

Artefacts in tests and managing them with Atlas

We’ve recently publicly released a Gem called dvla-atlas1 and today we are going to take you through a bit of history surrounding testing at the DVLA that led to use developing Atlas, along with a dive into some of the code that makes it tick. Atlas is designed to make the managing of properties in functional tests easier while also ensuring that each test is run in isolation and without any cross-pollination of test data....

November 14, 2023 · 8 min · 1658 words · Nigel Brookes-Thomas & George Bell

Linux timeout command

When a drone build is configured to both deploy and then delete AWS services, it is vital the AWS clean up step runs to maintain the AWS stacks within their limit. To ensure these steps run before the build times out, you can wrap your cucumber command in the linux timeout command within the drone pipeline example: commands: - cd functional-tests || exit 1 - timeout -k 10 10m bundle exec rake test Linux Timeout The timeout command is a command-line utility that will run the specified command for a given period of time, once that period of time is reached if the given command is still running it will be terminated....

October 14, 2023 · 2 min · 331 words · Paul Lewis

The at_exit function

Traditionally, in functional testing, a clean up/tear down script would be run in something called an After hook. These hooks are part of the Cucumber DSL and are designed to execute when a scenario has finished. Cucumber example: After do |scenario| if scenario.failed? MultiLogger.clean_logs end end There is a drawback to these hooks where they will fail to run when certain exit codes are returned from the scenario or the program is interrupted....

August 23, 2023 · 2 min · 255 words · Thomas Feathers