E2E tests are implemented with our notifier testing tool Maze runner, which is a black-box test framework written in Ruby.
End to end tests are written in cucumber-style .feature
files, and need Ruby-backed "steps" in order to know what to run. The tests are located in the top level features
directory.
Note: only Bugsnag employees can run the end-to-end tests. We have dedicated test infrastructure and private BrowserStack credentials which can't be shared outside of the organization.
Remote tests can be run against real devices provided by BrowserStack. In order to run these tests, you need to set the following environment variables:
- A BrowserStack App Automate Username:
BROWSER_STACK_USERNAME
- A BrowserStack App Automate Access Key:
BROWSER_STACK_ACCESS_KEY
- A path to a BrowserStack local testing binary:
MAZE_BS_LOCAL
- Run
bundle install
- Create and export a GPG key (follow the instructions in RELEASING)
- Check the contents of
Gemfile
to select the version ofmaze-runner
to use - To run a single feature:
make fixture-r21 && \ bundle exec maze-runner --app=build/fixture-r21.apk \ --farm=bs \ --device=ANDROID_9_0 \ features/smoke_tests/04_unhandled.feature
- To run all features, omit the final argument, but be wary of how many tests you run locally as we have a limited number of parallel tests and local running subverts the controls we have in place. For a full test run it is generally best to push your branch to Github and let CI run them.
- Maze Runner also supports all options that Cucumber does. Run
bundle exec maze-runner --help
for full details.