Skip to content

Resolve "[QA] Automation Triage 11.1.0 RC9 - Filling textarea with deploy key timeouts sometime"

Lin Jen-Shin requested to merge 49179-fill-with-js-directly-qa into master

What does this MR do?

Fill variable text with JS directly to speed up

It's too slow to use set(value), often timing out. Filling with JS is much faster for longer text, especially when the key size is larger than 8192.

Before this patch:

Top 3 slowest examples (256.83 seconds, 89.4% of total time):
  cloning code using a deploy key user sets up a deploy key with QA::Runtime::Key::RSA(8192) to clone code using pipelines
    161.26 seconds ./qa/specs/features/project/deploy_key_clone_spec.rb:42
  cloning code using a deploy key user sets up a deploy key with QA::Runtime::Key::ECDSA(521) to clone code using pipelines
    47.79 seconds ./qa/specs/features/project/deploy_key_clone_spec.rb:42
  cloning code using a deploy key user sets up a deploy key with QA::Runtime::Key::ED25519() to clone code using pipelines
    47.79 seconds ./qa/specs/features/project/deploy_key_clone_spec.rb:42

Note that 161.26 was timed out. So it would actually take longer if it could ever complete. After patch:

Top 3 slowest examples (166.72 seconds, 83.8% of total time):
  cloning code using a deploy key user sets up a deploy key with QA::Runtime::Key::RSA(8192) to clone code using pipelines
    83.66 seconds ./qa/specs/features/project/deploy_key_clone_spec.rb:42
  cloning code using a deploy key user sets up a deploy key with QA::Runtime::Key::ECDSA(521) to clone code using pipelines
    42.78 seconds ./qa/specs/features/project/deploy_key_clone_spec.rb:42
  cloning code using a deploy key user sets up a deploy key with QA::Runtime::Key::ED25519() to clone code using pipelines
    40.27 seconds ./qa/specs/features/project/deploy_key_clone_spec.rb:42

Not that faster for smaller keys, but it's much faster for RSA 8192 (2 times faster). This was inspired from:

https://github.com/teamcapybara/capybara/blob/679548cea10773d45e32808f4d964377cfe5e892/lib/capybara/selenium/node.rb#L217

Where it's clearing the field by filling an empty string. Here we do the same for the exact value we want to fill.

What are the relevant issue numbers?

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/49179

Edited by Lin Jen-Shin

Merge request reports