Read about our upcoming Code of Conduct on this issue

  1. 20 Dec, 2021 1 commit
  2. 19 Dec, 2021 1 commit
    • Georges Racinet's avatar
      Feature flags: set only if needed, and wait for invalidation · a75b7db04484
      Georges Racinet authored
      Feature flags are "memoized" with a per-process RAM cache having
      a 1 minute expiration and no global invalidation system.
      Waiting 1 minute should be acceptable (we have no other choice anyway).
      In CI, this is negligible compared to the cost of false negatives
      (15 to 30 minutes of delay for a job retry) and the possibility that
      the server process involved in the check (e.g. for hgitaly1) would
      not see the same value as those involved in the actual testing.
      Even in development work, one typically runs repeatedly the same test
      with the same flags, changing them regularly only for last checks
      before committing.
      branch : stable
  3. 20 Dec, 2021 1 commit
  4. 19 Dec, 2021 6 commits
  5. 15 Dec, 2021 9 commits
    • Georges Racinet's avatar
      Selenium: using new find_element(By.* everywhere · c98e9ffd3551
      Georges Racinet authored
      The older `find_element_by_*` methods are deprecated
      by Selenium 4. As I checked, the recommended form should
      work with the 3.14 version we are using in CI.
      branch : stable
    • Georges Racinet's avatar
      Heptapod CI: bumping the base timeout to 30 seconds · 89c68fe828a9
      Georges Racinet authored
      This should reduce the frequency of false negatives, a goal
      that was a prime motivation to make timeouts relative.
      branch : stable
    • Georges Racinet's avatar
      selenium: using `BASE_TIMEOUT` in waiting helpers · e491e85cfa6c
      Georges Racinet authored
      This finishes making all timeouts in the functional test suite
      branch : stable
    • Georges Racinet's avatar
      Make all timeouts relative to a global constant · 0694195e0c28
      Georges Racinet authored
      If we want to change the timeouts (increase on CI, perhaps
      decrease for faster failures on powerful dev setups), we have
      to do it consistently.
      Therefore we change from a logic where the absolute timeout
      is passed as an optional argument to the various `wait_assert`
      callables, down to the fundamental `utils.wait_assert()` function
      to a logic where the tests only specify a multiplicative factor
      to apply to the `utils.BASE_TIMEOUT` constant, and same for
      `retry_wait`, this time relative to the computed timeout.
      The constant itself can be tweaked with an environment
      variable and still defaults to 10 seconds.
      branch : stable
    • Georges Racinet's avatar
      selenium.webdriver_wait: new centralized method · 4fcfc4b56bcb
      Georges Racinet authored
      It removes the spreading of the magic 10s from the tests
      themselves. Hardcoding the same 10 seconds
      in the utility module won't last for long.
      branch : stable
    • Georges Racinet's avatar
      Selenium: generalizing the use of `wait_could_click_element` · 3ed7bc417e78
      Georges Racinet authored
      This centralization is a step towards elimination of the magic
      10 seconds constant.
      branch : stable
    • Georges Racinet's avatar
      User.delete: also unregister from Heptapod instance · 4d32bb28841a
      Georges Racinet authored
      This was a long standing TODO. The warning log is icing
      on the cake (it would certainly be a surprise, but it can
      explain weird bugs if that happens)
      branch : stable
    • Georges Racinet's avatar
      User: made the webdriver thread local · 46aa1d7ded1e
      Georges Racinet authored
      Of course it is problematic if two threads use the same
      webdriver to play different scenarios. Element lookups and
      similar will tend not to work if the webdriver has unexpectantly
      changed page.
      So we needed to make the webdriver thread local, and this
      fixes lots of problems when running tests in parallel
      (assuming the Rails app has enough workers and threads to
      take them, of course)
      We introduce an attribute to host all thread-local attributes,
      and in particular the webdriver.
      In turn, for teardown, we need to keep track of all webdrivers,
      because otherwise the thread used to close the webdrivers would
      only see one of them.
      This is done with another new attribute, shared among threads this
      branch : stable
    • Georges Racinet's avatar
      Project: API call to tweak the merge method · 1d8fed1c87bc
      Georges Racinet authored
      At the time the tests for non-default merge method, such as `ff`
      (fast-forward) were introduced, the REST API did not provide
      means to change the merge method in the project setttings, but
      now it does.
      This makes for quite faster tests, especially if user webdriver
      is not logged in yet, but also creates the need to test the
      change with a web browser separately, which we now do.
      branch : stable
  6. 11 Dec, 2021 3 commits
  7. 13 Dec, 2021 1 commit
  8. 18 Feb, 2021 1 commit
    • Georges Racinet's avatar
      Production server tests: added a Git scenario · e1841b9c4912
      Georges Racinet authored
      Because they are relatively recent, the Git tests run with
      the basic user, instead of a full instance admin. We don't have
      an equivalent in production server mode yet, and it would be
      inappropriate because we really need to restrict the runners on
      the created project for this scenario, and only the group owner
      can do it.
      branch : stable
  9. 13 Dec, 2021 2 commits
  10. 27 Nov, 2021 4 commits
  11. 26 Nov, 2021 1 commit
  12. 12 Nov, 2021 1 commit
  13. 11 Nov, 2021 1 commit
  14. 23 Oct, 2021 4 commits
  15. 22 Oct, 2021 1 commit
  16. 26 Oct, 2021 3 commits
    • Georges Racinet's avatar
      Startup: wait if webpack is not ready · 0408b515375b
      Georges Racinet authored
      Should have done this long ago, and perhaps is the road towards
      letting go of the additional fixed waiting times in CI.
    • Georges Racinet's avatar
      Fixed test push_env for variations in output · 526553625009
      Georges Racinet authored
      Probably because of hg 5.9 vs 5.7, the `remote:` prefix can be
      farther from the expected environment out.
      Also, the `HEPTAPOD_NO_GIT` environment variable now appears.
      It would be dubious to assert it, and it's better anyway
      to assert each variable independently, although it is true
      that improving the test with variables that we *don't* want
      to be available to hooks would be better.
    • Georges Racinet's avatar
      Fixed testing image in default branch · 6a5c28d16894
      Georges Racinet authored
      This was broken since e1ebbdeadf4d ! It matters less than it looks
      for the release process, because the pipeline is typically triggered
      with an exact hash from Omnibus Heptapod pipeline, but still.