diff --git a/.gitea/workflows/ui-test.yaml b/.gitea/workflows/ui-test.yaml index fe40048..e78e722 100644 --- a/.gitea/workflows/ui-test.yaml +++ b/.gitea/workflows/ui-test.yaml @@ -16,14 +16,17 @@ on: - '.gitea/workflows/ui-test.yaml' - '!**/*.md' -# Playwright launches its own `pnpm dev` on :5173. In host-mode the -# runner shares the host's port namespace, so two parallel ui-test -# jobs (e.g. a push event racing with a pull_request event for the -# same commit) collide on EADDRINUSE. Group by the head commit so -# push and pull_request events for the same sha share one bucket. +# Playwright launches its own `pnpm dev` on :5173, and in host-mode +# the runner shares the host's port namespace with every other job, +# so two parallel ui-test runs collide on EADDRINUSE. Serialise via a +# singleton concurrency group with queueing — new runs wait their +# turn instead of cancelling the in-progress one. cancel-in-progress +# is explicitly false because Gitea has shown spurious self-cancel +# behaviour under cancel-in-progress: true even when no other run +# shares the group. concurrency: - group: ui-test-${{ gitea.event.pull_request.head.sha || gitea.sha }} - cancel-in-progress: true + group: ui-test-singleton + cancel-in-progress: false jobs: test: