diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 5d64142e35..ccf5429773 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -293,8 +293,8 @@ jobs: --config=playwright-merge.config.ts \ ./all-blob-reports env: - # Only pass creds to the flaky-reporter on main branch runs - GITHUB_TOKEN: ${{ github.ref_name == 'develop' && secrets.ELEMENT_BOT_TOKEN || '' }} + # Only pass creds to the flaky-reporter on main branch runs, or in merge queues (knowing these may be false positives) + GITHUB_TOKEN: ${{ case(github.event_name == 'merge_group' || github.ref_name == 'develop', secrets.ELEMENT_BOT_TOKEN, '') }} PLAYWRIGHT_HTML_TITLE: ${{ case(github.event_name == 'pull_request', format('Playwright Report PR-{0}', env.PR_NUMBER), 'Playwright Report') }} # Upload the HTML report even if one of our reporters fails, this can happen when stale screenshots are detected diff --git a/packages/playwright-common/src/flaky-reporter.ts b/packages/playwright-common/src/flaky-reporter.ts index cebfee7702..0a88f6b03c 100644 --- a/packages/playwright-common/src/flaky-reporter.ts +++ b/packages/playwright-common/src/flaky-reporter.ts @@ -139,7 +139,8 @@ class FlakyReporter implements Reporter { console.log(flake); } - const { GITHUB_TOKEN, GITHUB_API_URL, GITHUB_SERVER_URL, GITHUB_REPOSITORY, GITHUB_RUN_ID } = process.env; + const { GITHUB_TOKEN, GITHUB_API_URL, GITHUB_SERVER_URL, GITHUB_REPOSITORY, GITHUB_RUN_ID, GITHUB_EVENT_NAME } = + process.env; if (!GITHUB_TOKEN) return; const issues = await this.getAllIssues(); @@ -147,13 +148,17 @@ class FlakyReporter implements Reporter { const title = ISSUE_TITLE_PREFIX + "`" + flake + "`"; const existingIssue = issues.find((issue) => issue.title === title); const headers = { Authorization: `Bearer ${GITHUB_TOKEN}` }; - const body = `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}`; + let body = `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}`; + + if (GITHUB_EVENT_NAME === "merge_group") { + body += " (merge queue run, may be a false positive)"; + } const labels = [LABEL, ...results.map((test) => `${LABEL}-${test.parent.project()?.name}`)]; if (existingIssue) { console.log(`Found issue ${existingIssue.number} for ${flake}, adding comment...`); - // Ensure that the test is open + // Ensure that the issue is open await fetch(existingIssue.url, { method: "PATCH", headers,