When used with a Hash, `.keys.include?` is bad because:
1. It performs a O(n) search instead of the efficient `.has_key?`
2. It clones all keys into separate array.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/64975
In order to break away from using CSS classes as
our primary method of element identification, we
need to provide the ability to search for data
attributes.
Make Test::Sanity::Selectors now work
Utilize regex to match on literal strings of the element name
Suggest the data-qa-selector pattern vs the qa-
Add data-qa-selector to login page to start
We need a page that is heavily used in order to be
confident that this functionality works. Let's start
with the Login page
Use appropriate HAML data tag practices
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`.
Checks that archives of two different user projects with the same name aren't the same via checksum. I.E. a user can't download the archive of another's project by mistake.
To enable the test some enhancements were made. Namely updating the client module to handle more than one API instance and the creation a custom rest call method that downloads to tmp.
Uses `:requires_admin` metadata to specify that a test needs
an admin user.
Sets the push file size limit test to require an admin user.
With an admin access token set as the env var
GITLAB_QA_ADMIN_ACCESS_TOKEN, the push size
limit test now only uses the API and CLI
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
Add knapsack qa report and use it to run tests in parallel
Use the RSpec runner with knapsack
The way the Knapsack runner uses exec to start rspec seems
incompatible with the way we expect it to work. Plus, it requires
specifying KNAPSACK_TEST_DIR.
Instead, we use knapsacks AllocatorBuilder to select the spec
files to run, and then start rspec as normal, via
RSpec::Core::Runner.run
This also means we can incorporate tags.
Let the job run automatically
Include KNAPSACK_TEST_FILE_PATTERN in vars
Check all defined knapsack env vars before requiring knapsack
Elements now have the ability to be required on pages or not
Currently using the default wait mechanism
Altered the ElementWithPattern Cop to fit new splat for init
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
gitlab-qa accepts an env var named GITLAB_QA_ACCESS_TOKEN, but here we
only accepted PERSONAL_ACCESS_TOKEN.
This change replaces PERSONAL_ACCESS_TOKEN with GITLAB_QA_ACCESS_TOKEN
First attempt at allowing a feature flag to be set via the command line
when running tests. This will enable the flag, run the tests, and then
disable the flag.
Using OptionParser meant changing how scenarios get the instance
address, so this also allows the address to be set as a command line
option. It's backwards compatible (you can still provide the address
as the command line option after the scenario)
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.
There was a bug that required credentials when using SSH key auth when
using LFS. That bug was fixed so we shouldn't need to add credentials to
.netrc when using SSH anymore.
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
- Clarify message shown when skipping quarantined tests because
they don't have all the specified tags.
- Simplify rejecting item from array
- Remove 'pass' from example descriptions to avoid confusion
Instead of modifying the runner, use config hooks to skip quarantined
tests, and to allow only quarantined tests to be run, if desired.
This way quarantined tests are skipped, not excluded completely, so
they are still included in test results.
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.
Adds a new end-to-end test to check that Git protocol v2 can be used to
push over SSH.
Includes a change in Git::Repository to use Runtime::Env.debug? to
enable logging instead of .verbose?
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.
If SIGNUP_DISABLED is true skip any tests with a context
:skip_signup_disabled. The context is set for the registration tests.
This allows the tests to be skipped when run on the staging, which
doesn't allow registration
Adds the ability to use admin credentials to add a license so that when
testing an LDAP user on EE the LDAP user does not have to be an admin.
Admin credentials default to GDK's root user. Can be overriden via
ADMIN_USERNAME and ADMIN_PASSWORD environment variables.
- When -t or --tag are passed, we shouldn't exclude the :orchestrated tag
- When test path is passed, we shouldn't append the default test path
Signed-off-by: Rémy Coutable <remy@rymai.me>
[QA] Improve the fork scenario to take a username and password instead of always…
Closes gitlab-org/quality/staging#2
See merge request gitlab-org/gitlab-ce!21090