From 38eaa7257252e5b5cb53014351c5a3f14d778b64 Mon Sep 17 00:00:00 2001 From: Lukasz Lancucki Date: Wed, 16 Sep 2026 13:34:18 +0100 Subject: [PATCH] fix(ci): keep the E2E step on tests/e2e and give it a 180-minute budget `make e2e` dropped the `tests/e2e` path whenever `args` carried pytest options, so the CI step fell back to `testpaths = "tests"` and re-ran the 2310 unit tests, with coverage, after the e2e suite. The target now always passes the suite path (`path` overrides it) and runs with `--no-cov`, so the unit `coverage.xml` that SonarCloud reads is left intact. The e2e suite has exceeded the 90-minute job timeout on every `main` push and cron run since 2026-06-25 because of TEST-environment latency on the term-variants and assets endpoints, so no launch has finished since. Report Portal puts the full suite at 103 to 120 minutes today, with the first half swinging by 17 minutes between launches. Raise the timeout on the push, cron and release workflows to 180 minutes so the suite can complete again with headroom while the latency is escalated. Refs: MPT-25021 Co-Authored-By: Claude Fable 5.1 --- .github/workflows/cron-main-e2e.yml | 2 +- .github/workflows/push-release-branch.yml | 2 +- .github/workflows/release.yml | 2 +- docs/e2e_tests.md | 10 ++++++++-- docs/testing.md | 3 ++- make/repo.mk | 2 +- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cron-main-e2e.yml b/.github/workflows/cron-main-e2e.yml index 93e28836..bfc0b5d0 100644 --- a/.github/workflows/cron-main-e2e.yml +++ b/.github/workflows/cron-main-e2e.yml @@ -7,7 +7,7 @@ on: jobs: build: runs-on: ubuntu-latest - timeout-minutes: 90 + timeout-minutes: 180 steps: - name: "Checkout" uses: actions/checkout@v7 diff --git a/.github/workflows/push-release-branch.yml b/.github/workflows/push-release-branch.yml index 095871b3..ba5653ff 100644 --- a/.github/workflows/push-release-branch.yml +++ b/.github/workflows/push-release-branch.yml @@ -13,7 +13,7 @@ jobs: build: runs-on: ubuntu-latest - timeout-minutes: 90 + timeout-minutes: 180 steps: - name: "Checkout" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e75d9e47..ae0b21bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ concurrency: jobs: release: runs-on: ubuntu-latest - timeout-minutes: 90 + timeout-minutes: 180 steps: - name: "Checkout" uses: actions/checkout@v7 diff --git a/docs/e2e_tests.md b/docs/e2e_tests.md index b4d2ff2d..403ab481 100644 --- a/docs/e2e_tests.md +++ b/docs/e2e_tests.md @@ -37,10 +37,16 @@ one domain, and uses whichever collection makes the case observable. ## Running Tests ```bash -make e2e # run the E2E suite -make e2e args="tests/e2e/catalog" # run a subset of E2E tests +make e2e # run the E2E suite +make e2e path=tests/e2e/catalog # run a subset of E2E tests +make e2e args="-k test_create_variant" # pass extra pytest options ``` +The target always passes a test path (`tests/e2e` unless `path` is set), so `args` only +carries options. Passing options alone used to drop the path and fall back to `testpaths`, +which made CI run the unit suite again after the E2E tests. E2E runs also disable coverage +(`--no-cov`) so they do not overwrite the unit `coverage.xml` that SonarCloud reads. + E2E tests need live API credentials and run against the real API, so they have their own target: `make test` covers `tests/unit` only, and `make check-all` does not run them. diff --git a/docs/testing.md b/docs/testing.md index 42cf5222..ae669669 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -21,7 +21,8 @@ Run all test commands through Docker-based make targets: ```bash make test make test args="tests/unit/http" -make test args="tests/e2e" +make e2e +make e2e path=tests/e2e/catalog make check make check-all ``` diff --git a/make/repo.mk b/make/repo.mk index f34a2ea4..35b279bf 100644 --- a/make/repo.mk +++ b/make/repo.mk @@ -1,3 +1,3 @@ ## Add repo-specific targets here. Do not modify the shared *.mk files. e2e: ## Run e2e test - $(RUN) pytest -p no:randomly --junitxml=e2e-report.xml $(if $(args),$(args), tests/e2e) + $(RUN) pytest -p no:randomly --no-cov --junitxml=e2e-report.xml $(or $(path),tests/e2e) $(args)