1. 17 Aug, 2018 1 commit
    • Lin Jen-Shin's avatar
      Fill variable text with JS directly to speed up · 2efd5c0b
      Lin Jen-Shin authored
      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.
      2efd5c0b
  2. 16 Aug, 2018 34 commits
  3. 15 Aug, 2018 5 commits