Uses the parallel_tests gem to execute tests in multiple processes
simultaneously on the same machine.
Adds the `--parallel` CLI option that instructs the QA framework
to use the parallel_tests executable.
Tests need access to global state contained in `Runtime::Scenario`
so when `--parallel` is invoked `Runtime::Scenario` is serialized
to an environment variable, which is passed to parallel_tests,
and then deserialized in `spec_helper`.
Wait for the new file modal to stop animating before clicking it
We now need to click the commit button 3 times:
1. To enter commit mode
2. To being staging changes
3. To submit the commit
Uses the branch_name element to find a branch with a specific
name, instead of using a dynamic CSS class that can't be validated
by the sanity selector test
Removes the unnecessary :orchestrated tag and updates a few
selectors. Also wait_for_success for import before proceeding.
The test is currently placed in quarantine because of a bug.
Sometimes add_list_delete_branches_spec.rb would not wait after
deleting a branch before checking that the branch was done. It would
fail when the UI was still processing.
This checks that the loading icon is gone before returning from
delete_branch.
It also makes sure credentials are added properly after recent changes
to QA::Git::Repository
Wait for the "Commit..." button to disappear and the "Stage & Commit"
button to appear before clicking the latter button. The animation that
is shown while changing the buttons must complete before clicking
"Stage & Commit" will have any effect _even if_ the button is visible
before the animation is complete.
Override page object methods to log the actions taken by the methods
before or after the action, as appropriate.
Allow page object action logging to be turned on via a QA_DEBUG env var.
Unlike CHROME_HEADLESS (and the soon to arrive VERBOSE), QA_DEBUG
is false by default.
QA_DEBUG is used instead of just DEBUG because that enables Selenium
debug logging.
Mask passwords entered into fields with a QA selector with 'password'
in the name. Doesn't mask sensitive data entered into any other field.