Skip to content

fix(e2e): docs_site test intermittently times out #1763

Open

Description

@marcossevilla

Description

The create docs_site e2e test (e2e/test/commands/create/docs_site/docs_site_test.dart) intermittently times out on main.

Failing run: https://github.com/VeryGoodOpenSource/very_good_cli/actions/runs/37757567540/job/113245773965

TimeoutException after 0:02:00.000000: Test timed out after 2 minutes.
FileSystemException: Deletion failed, path = '/tmp/MCMMJN' (OS Error: Directory not empty, errno = 39)

The failing commit (#1756) is unrelated to docs_site, and the following run on main (37779724241) passed on the same code, so this is flakiness, not a regression.

Root cause

The test has a 2-minute timeout, but it normally takes almost that long:

Run Result "Run Tests (e2e)" step duration
35327672012 ✅ 1m52s
35616186431 ✅ 1m47s
36122147301 ✅ 1m49s
37757567540 ❌ 2m15s (timeout)

Most of the time goes to npm install. The generated project has no package-lock.json, and CI has no npm cache, so every run installs ~1,300 packages fresh from the registry. Timing each step locally:

Step Duration
npm install 72s
npm run format 1s
npm run lint 1s
npm run build 8s

On CI the time depends on registry speed, so the test sometimes runs past the limit.

The Directory not empty error is a side effect: the test teardown deletes the temp directory while npm is still writing to it after the timeout.

The 2-minute timeout was copied from the Dart/Flutter e2e tests. The other tests that install heavy dependencies already use longer limits: flame_game has 5 minutes and flutter_plugin has 8.

Proposed fix

  1. Raise the timeout in docs_site_test.dart to Duration(minutes: 5), matching flame_game.
  2. Optionally, speed up the install with npm install --no-audit --no-fund --prefer-offline. Caching npm through actions/setup-node won't work as-is, because it needs a lockfile and the template doesn't ship one.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions