diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 2ad9beb9..9974202c 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -36,5 +36,22 @@ jobs: exit 0 fi - echo "PR #$PR_NUMBER has Automerge label and CI passed. Merging..." + # Ensure the CI run matches the PR's latest commit to avoid merging stale results + CI_SHA="${{ github.event.workflow_run.head_sha }}" + PR_SHA=$(gh pr view "$PR_NUMBER" --repo "$REPO" --json headRefOid --jq '.headRefOid') + + if [ "$CI_SHA" != "$PR_SHA" ]; then + echo "CI ran on $CI_SHA but PR head is $PR_SHA, skipping" + exit 0 + fi + + # Ensure no checks have failed on the PR + FAILED=$(gh pr checks "$PR_NUMBER" --repo "$REPO" --json state --jq '[.[] | select(.state == "FAILURE")] | length') + + if [ "$FAILED" -gt 0 ]; then + echo "PR #$PR_NUMBER has $FAILED failed check(s), skipping merge" + exit 0 + fi + + echo "PR #$PR_NUMBER has Automerge label and all checks passed. Merging..." gh pr merge "$PR_NUMBER" --squash --repo "$REPO" --delete-branch diff --git a/tests/Browser/BankAccountsTest.php b/tests/Browser/BankAccountsTest.php index c4699c0d..fa22507a 100644 --- a/tests/Browser/BankAccountsTest.php +++ b/tests/Browser/BankAccountsTest.php @@ -148,7 +148,7 @@ it('can edit an existing account via dropdown menu', function () { // Create account via UI to ensure it syncs to IndexedDB createAccountViaUI($page, 'Old Account Name', 'Edit Bank', 'Checking', 'USD'); - $page->navigate('/settings/accounts')->wait(3); + $page->navigate('/settings/accounts')->wait(5); $page->assertSee('Bank accounts') ->click('button[aria-label="Open menu"]') @@ -160,7 +160,7 @@ it('can edit an existing account via dropdown menu', function () { ->click('button[type="submit"]:has-text("Update")') ->wait(2); - $page->navigate('/settings/accounts')->wait(3); + $page->navigate('/settings/accounts')->wait(5); $page->assertSee('Updated Account Name') ->assertNoJavascriptErrors(); @@ -179,7 +179,7 @@ it('can delete an account via dropdown menu', function () { // Create account via UI to ensure it syncs to IndexedDB createAccountViaUI($page, 'Account To Delete', 'Delete Bank', 'Checking', 'USD'); - $page->navigate('/settings/accounts')->wait(3); + $page->navigate('/settings/accounts')->wait(5); $page->assertSee('Bank accounts') ->assertSee('Account To Delete') @@ -193,7 +193,7 @@ it('can delete an account via dropdown menu', function () { ->click('button[type="submit"]:has-text("Delete")') ->wait(2); - $page->navigate('/settings/accounts')->wait(3); + $page->navigate('/settings/accounts')->wait(5); $page->assertDontSee('Account To Delete') ->assertNoJavascriptErrors();