* automatically save screenshot and page source in case of test failure
* show a blank page with a test name before every test
just in case, it might help with debugging of flaky tests.
* Use Bazel for running Rust tests
* Add Rust build/test targets to README.md
[skip ci]
* Crate tests should be unsandboxed
---------
Co-authored-by: Diego Molina <diemol@users.noreply.github.com>
Co-authored-by: Boni García <boni.garcia@uc3m.es>
This commit introduces few major changes to the Selenium CI, overhauling
the current implementation to make it a bit more usable and maintainable.
1. Introduces high-level orchestrating "CI" workflow that is run on
every push to the main branch, every 12 hours, every pull request,
and manually. This workflow checks which bindings are affected by the
pushed changes and calls individual CI workflows, presenting all of
the results on a single page -
https://github.com/SeleniumHQ/selenium/actions/workflows/ci.yml.
2. Reworks every "CI - <Bindings>" workflow to be callable from other
workflows or run manually. The former is important for the "CI" workflow,
the latter is matter of convenience so that individual bindings CI
workflow can be run.
3. Individual bindings CI workflow are also implemented in a similar
manner with the following pipeline:
Build -> Documentation / Lint / Unit Tests -> Integration Tests
This allows to better balance the load across the CI runners queue,
preventing an immediate burst of queued runs.
4. Almost every CI pipeline step is implemented via a callable
bazel.yml workflow. It is responsible for setting up the whole
environment (browsers, Bazel caches) and greatly simplifies the
individual bindings workflow. The only exceptions not using it are
few JavaScript/Python tasks not migrated to Bazel and Rust pipeline.
6. Removes unnecessary installation of JDK because it's already taken
care of by Bazel.
7. Allows to start interacting SSH session inside CI upon failure. This
can be done by re-running a failed build with "Enable debug logging"
on.
8. Allows to force-run CI on pull requests if the title includes
[<bindings>] text. We could also fetch commits on this PR, but it
needs extra code and can be done later.