• 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
secret_variables.rb 1.79 KB