Skip to content
Merged
Show file tree
Hide file tree
Changes from 208 commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
d1d7127
chore: remove cypress e2e tests
shoom3301 Aug 5, 2026
a5c272c
test: add selectors to UI elements
shoom3301 Aug 5, 2026
18fab35
feat: e2e tests with playwright
shoom3301 Aug 5, 2026
2da1da7
ci: run e2e tests
shoom3301 Aug 5, 2026
43cd90a
chore: update deps
shoom3301 Aug 5, 2026
723359b
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
a679806
chore: update bundle sizes [automatic]
cowswap-release-sync[bot] Aug 5, 2026
e25eec2
chore: update bundle sizes [automatic]
cowswap-release-sync[bot] Aug 5, 2026
f6b38cc
chore: update e2e commands
shoom3301 Aug 5, 2026
08ef466
Merge remote-tracking branch 'origin/feat/e2e-playwright-3' into feat…
shoom3301 Aug 5, 2026
6b80b09
Merge branch 'feat/e2e-playwright-3' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
5da64a7
chore: delete
shoom3301 Aug 5, 2026
bfa0940
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
50aa99b
chore: delete cypress
shoom3301 Aug 5, 2026
4197c03
chore: fix test
shoom3301 Aug 5, 2026
4df32b5
Merge branch 'feat/e2e-playwright-1' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
3fc5d52
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
68b00de
chore: fix links
shoom3301 Aug 5, 2026
0a3a1c3
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
e3bed5c
chore: revert
shoom3301 Aug 5, 2026
02ce9ec
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 5, 2026
a67c3c7
chore: revert
shoom3301 Aug 5, 2026
7ecbda7
refactor: use setupTestConditions in tests
shoom3301 Aug 6, 2026
93fddb7
chore: add account activities locator
shoom3301 Aug 6, 2026
9ee9c1e
refactor: decompose mockSwapFulfillment
shoom3301 Aug 6, 2026
3c7a128
refactor: use types from sdk
shoom3301 Aug 6, 2026
c39705b
test: e2e [MO-06]
shoom3301 Aug 6, 2026
c4298c1
docs: add E2E SPEC SKILL
shoom3301 Aug 6, 2026
feb8fd4
docs: add E2E SCENARIO SKILL
shoom3301 Aug 6, 2026
4f712cf
chore: clean up
shoom3301 Aug 6, 2026
62021d2
test: e2e [LO-02]
shoom3301 Aug 6, 2026
4d91d20
test: e2e [MO-07]
shoom3301 Aug 6, 2026
75c59ee
test: e2e [MO-07] snackbar
shoom3301 Aug 6, 2026
5cad625
refactor: approve test
shoom3301 Aug 6, 2026
dcbf4cb
chore: add test
shoom3301 Aug 6, 2026
cdc302f
test: e2e [MO-09]
shoom3301 Aug 7, 2026
da5150e
test: e2e [MO-10]
shoom3301 Aug 7, 2026
ab0bd16
refactor: align market-orders tests to doc
shoom3301 Aug 7, 2026
f82fbd0
test: e2e [MO-03]
shoom3301 Aug 7, 2026
93acbf2
test: e2e [MO-08]
shoom3301 Aug 7, 2026
1e223f3
test: e2e [MO-11]
shoom3301 Aug 7, 2026
a4f8245
test: e2e [MO-22]
shoom3301 Aug 7, 2026
8cd093f
test: e2e [MO-30]
shoom3301 Aug 8, 2026
72db874
test: e2e [MO-42]
shoom3301 Aug 8, 2026
42eb059
test: e2e [MO-45]
shoom3301 Aug 8, 2026
e61b3a1
test: e2e [MO-46]
shoom3301 Aug 8, 2026
252b363
test: e2e [MO-54]
shoom3301 Aug 8, 2026
bb62509
refactor: simplify e2e tests
shoom3301 Aug 8, 2026
5f83da6
test: e2e MO-61
shoom3301 Aug 9, 2026
e3121c0
test: e2e MO-70 MO-71
shoom3301 Aug 9, 2026
abedb95
chore: remove slack notification from smoke
shoom3301 Aug 10, 2026
95593d4
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 10, 2026
62fd48a
chore: clean up code
shoom3301 Aug 10, 2026
4b19a9f
chore: mark as smoke
shoom3301 Aug 10, 2026
a04ff59
chore: fix test
shoom3301 Aug 10, 2026
deec696
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 10, 2026
1cb2163
Merge branch 'feat/e2e-playwright' of https://github.com/cowprotocol/…
shoom3301 Aug 10, 2026
8d7b3aa
Merge branch 'feat/e2e-playwright-1' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
463b1f8
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
547708c
chore: fix test
shoom3301 Aug 10, 2026
2dfc961
Merge branch 'feat/e2e-playwright-3' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
b966b53
chore: update bundle sizes [automatic]
cowswap-release-sync[bot] Aug 10, 2026
ba7d7aa
chore: update bundle sizes [automatic]
cowswap-release-sync[bot] Aug 10, 2026
c92fe9c
chore: update bundle sizes [automatic]
cowswap-release-sync[bot] Aug 10, 2026
28b73a3
chore: fix test
shoom3301 Aug 10, 2026
262e569
Merge remote-tracking branch 'origin/e2e/market-orders' into e2e/mark…
shoom3301 Aug 10, 2026
ca5b801
chore: fix test
shoom3301 Aug 10, 2026
252d0c7
feat(e2e): speed up updaters
shoom3301 Aug 10, 2026
a487256
test: add selectors to UI elements
shoom3301 Aug 5, 2026
43167ba
chore: fix test
shoom3301 Aug 5, 2026
fd0fb46
Merge commit 'refs/pull/7959/head' of https://github.com/cowprotocol/…
shoom3301 Aug 10, 2026
eddec69
Merge branch 'feat/e2e-playwright-1' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
806375f
Merge remote-tracking branch 'origin/feat/e2e-playwright-2' into feat…
shoom3301 Aug 10, 2026
eea34b8
test: e2e MO-61
shoom3301 Aug 10, 2026
fcbfb4e
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 10, 2026
0d64709
Merge branch 'feat/e2e-playwright-1' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
ef92a74
test: e2e MO-14
shoom3301 Aug 10, 2026
199a9ab
test: e2e MO-47
shoom3301 Aug 10, 2026
7986cbc
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
4ce63d4
Merge branch 'feat/e2e-playwright-3' of https://github.com/cowprotoco…
shoom3301 Aug 10, 2026
2f9b6ac
chore: fix review issues
shoom3301 Aug 11, 2026
b6a1aa9
chore: address review comments
shoom3301 Aug 11, 2026
87961b3
chore: update bundle sizes [automatic]
cowswap-release-sync[bot] Aug 11, 2026
bee89cc
chore: address review comments
shoom3301 Aug 11, 2026
da89b12
Merge remote-tracking branch 'origin/feat/e2e-playwright-2' into feat…
shoom3301 Aug 11, 2026
a53f387
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 11, 2026
7bfcaf8
chore: update lock
shoom3301 Aug 11, 2026
afdff68
chore: fix workflows
shoom3301 Aug 11, 2026
f822251
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 11, 2026
e490975
Merge branch 'feat/e2e-playwright-1' of https://github.com/cowprotoco…
shoom3301 Aug 11, 2026
1617843
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 11, 2026
4af9613
test: e2e cross-chain swaps
shoom3301 Aug 11, 2026
dd355fc
Merge branch 'feat/e2e-playwright-3' of https://github.com/cowprotoco…
shoom3301 Aug 11, 2026
d18d76e
chore: fix lock
shoom3301 Aug 11, 2026
b997fa0
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 11, 2026
388e897
docs: update e2e AGENTS.md
shoom3301 Aug 11, 2026
75bc9aa
chore: make tests stable
shoom3301 Aug 12, 2026
7f8cd6e
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 12, 2026
89a21e5
chore: update tests id
shoom3301 Aug 12, 2026
0fc344e
chore: update comments
shoom3301 Aug 12, 2026
4fcdd1a
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 12, 2026
a81dfd8
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 12, 2026
797279d
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 12, 2026
24d23ce
test(e2e): mock all rpc node requests
shoom3301 Aug 12, 2026
8fb9e01
test(e2e): improve rpc node mocks
shoom3301 Aug 12, 2026
8523c86
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 12, 2026
fe6b0cb
refactor: simplify e2e mocks
shoom3301 Aug 12, 2026
9e31d9f
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 12, 2026
bbacd5f
chore: merge changes
shoom3301 Aug 12, 2026
cefa072
chore: fix locator
shoom3301 Aug 12, 2026
b4b35a9
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 12, 2026
c623450
chore: fix allowance mock
shoom3301 Aug 12, 2026
8e90a15
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 12, 2026
a45006b
chore: improve recoverDepositAddress hack
shoom3301 Aug 12, 2026
4597958
Merge branch 'feat/e2e-playwright-3' into e2e/market-orders
elena-zh Aug 12, 2026
b91870f
chore: improve code
shoom3301 Aug 12, 2026
a273179
chore: improve tests stability
shoom3301 Aug 12, 2026
5397421
test(e2e): add [CS-129] enable Hooks via settings toggle
elena-zh Aug 12, 2026
bdd7e39
chore: improve tests stability
shoom3301 Aug 13, 2026
6aab3ab
chore: remove test
shoom3301 Aug 13, 2026
f9b0726
chore: update test ids
shoom3301 Aug 13, 2026
8b083e4
chore: add smoke tags
shoom3301 Aug 13, 2026
4558f5f
chore: change slack channel
shoom3301 Aug 13, 2026
5e7b4ba
docs(e2e): update readme
shoom3301 Aug 13, 2026
30dff46
Merge branch 'feat/e2e-playwright-3' of https://github.com/cowprotoco…
shoom3301 Aug 13, 2026
83e4bf7
chore: make tests stable
shoom3301 Aug 13, 2026
ba42d68
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 13, 2026
db9e09b
chore: fix mockSocketVerifier
shoom3301 Aug 13, 2026
1af51b3
chore: update docs
shoom3301 Aug 13, 2026
7aa1942
chore: fix workers count
shoom3301 Aug 13, 2026
29a00d0
chore: revert config
shoom3301 Aug 13, 2026
3f00b97
chore: improve selectors
shoom3301 Aug 13, 2026
403d1c0
chore: fix BridgeRoutePanel.expand
shoom3301 Aug 13, 2026
115609d
chore: fix config
shoom3301 Aug 13, 2026
b8372f9
chore: mock token nonce call
shoom3301 Aug 13, 2026
01bb3f1
chore: fix test
shoom3301 Aug 13, 2026
9e4bcc4
chore: adjust config
shoom3301 Aug 13, 2026
4f0cae1
feat(e2e): add OrdersMock, a multi-order registry replacing the singl…
shoom3301 Aug 13, 2026
999afd9
chore: fix config
shoom3301 Aug 13, 2026
de8060e
feat(e2e): add seedOpenOrder/wasCancelRequested/markCancelled to Orde…
shoom3301 Aug 13, 2026
415fb18
feat(e2e): add trackEthFlowOrder to OrdersMock, completing the merged…
shoom3301 Aug 13, 2026
6e02a5b
feat(e2e): wire OrdersMock into the mocks fixture as mocks.orders
shoom3301 Aug 13, 2026
fff52c0
refactor(e2e): migrate market-orders.spec.ts to mocks.orders
shoom3301 Aug 13, 2026
b79eaa1
fix(e2e): restore tradePage destructuring in market-orders.spec.ts (T…
shoom3301 Aug 13, 2026
f68596d
refactor(e2e): migrate cross-chain-swaps.spec.ts to mocks.orders
shoom3301 Aug 13, 2026
90cd46b
refactor(e2e): migrate limit-orders.spec.ts to mocks.orders
shoom3301 Aug 13, 2026
68ffe34
refactor(e2e): remove old order mocks
shoom3301 Aug 13, 2026
aa3351d
Merge remote-tracking branch 'origin/e2e/cross-chain-swaps' into e2e/…
shoom3301 Aug 13, 2026
08d4834
chore: bump workers
shoom3301 Aug 13, 2026
c66d30e
chore: remove tokens mock
shoom3301 Aug 13, 2026
513a336
chore: fix socketVerifier mock
shoom3301 Aug 13, 2026
36d390d
chore: fix tooltip
shoom3301 Aug 13, 2026
f8e6458
chore: remove rpcProxy
shoom3301 Aug 14, 2026
12bdd87
refactor: extract mockRpcNodeRequest
shoom3301 Aug 14, 2026
0e127c0
refactor: extract mockContractViewCall
shoom3301 Aug 14, 2026
184b224
refactor: simplify installSocketVerifier
shoom3301 Aug 14, 2026
1141d70
refactor: remove real RPC calls
shoom3301 Aug 14, 2026
56f613c
refactor: refactor allowance mock
shoom3301 Aug 14, 2026
b18c323
chore: fix allowance mock
shoom3301 Aug 14, 2026
b9fadd4
chore: fix mocks
shoom3301 Aug 14, 2026
af132dd
chore: mock wallet rpc
shoom3301 Aug 14, 2026
fa537ce
chore: local workers 6
shoom3301 Aug 14, 2026
701415c
chore: fix installSocketVerifier
shoom3301 Aug 14, 2026
b3cac77
chore: fix nonces
shoom3301 Aug 14, 2026
39d4c1b
chore: fix wallet connection flack
shoom3301 Aug 14, 2026
7930b0b
chore: disable analytics in e2e
shoom3301 Aug 14, 2026
12c0a4f
fix: fix wallet connection flaky
shoom3301 Aug 14, 2026
789bf4a
chore: fix unlock screen flack
shoom3301 Aug 14, 2026
c3b06c5
chore: fix allowance mock chainId
shoom3301 Aug 14, 2026
41ef380
chore: fix navigation flacky test
shoom3301 Aug 15, 2026
cf53898
refactor: simplify mockEthFlowTransaction
shoom3301 Aug 15, 2026
5e8048d
chore: add test
shoom3301 Aug 15, 2026
33713f2
refactor: simplify approve mock
shoom3301 Aug 15, 2026
6801744
chore: refactor mock ethFlow tx
shoom3301 Aug 15, 2026
ec30088
refactor: remove rpc url from mocks
shoom3301 Aug 15, 2026
061ad82
chore: fix order fill flak
shoom3301 Aug 15, 2026
a4756b0
Merge branch 'e2e/exp' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 15, 2026
5a676c1
chore: merge
shoom3301 Aug 15, 2026
c42ee01
chore: merge
shoom3301 Aug 15, 2026
bc627d2
chore: revert fix
shoom3301 Aug 15, 2026
3a608b6
refactor: finalize mockContractViewCall
shoom3301 Aug 15, 2026
8ee90ce
chore: fix CS-118 flacky
shoom3301 Aug 15, 2026
89ed41b
chore: fix eth-flow calls parsing
shoom3301 Aug 17, 2026
9d23465
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 24, 2026
e80cbc6
Merge branch 'feat/e2e-playwright-2' of https://github.com/cowprotoco…
shoom3301 Aug 24, 2026
4870ddb
Merge branch 'feat/e2e-playwright-3' of https://github.com/cowprotoco…
shoom3301 Aug 24, 2026
8adfe91
Merge branch 'e2e/market-orders' of https://github.com/cowprotocol/co…
shoom3301 Aug 24, 2026
ca2f199
Merge branch 'e2e/cross-chain-swaps' of https://github.com/cowprotoco…
shoom3301 Aug 24, 2026
0d3cb25
chore: fix lock
shoom3301 Aug 24, 2026
f936bdb
fix: fix flaky tests
shoom3301 Aug 24, 2026
d06a98d
fix: fix flaky tests
shoom3301 Aug 24, 2026
e16e192
fix: fix flaky tests
shoom3301 Aug 24, 2026
d47d1e8
fix: fix flaky tests
shoom3301 Aug 24, 2026
bd55b6d
fix: fix flaky tests
shoom3301 Aug 24, 2026
6f22972
fix: fix flaky tests
shoom3301 Aug 24, 2026
28daa99
fix: fix flaky tests
shoom3301 Aug 24, 2026
3024103
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 25, 2026
2ee012c
chore: rearrange files
shoom3301 Aug 25, 2026
b84604a
chore: cut scope
shoom3301 Aug 25, 2026
a12fd80
chore: cut scope
shoom3301 Aug 25, 2026
48b25ca
chore: fix flaky tests
shoom3301 Aug 25, 2026
064c387
feat(cowswap): adjust app for e2e tests
shoom3301 Aug 25, 2026
bec9d9f
chore: fix build
shoom3301 Aug 25, 2026
4541a76
chore: fix build
shoom3301 Aug 25, 2026
1357ebe
Merge branch 'e2e-tests/p1' of https://github.com/cowprotocol/cowswap…
shoom3301 Aug 25, 2026
ce8341f
chore: reduce scope
shoom3301 Aug 25, 2026
78a5dd0
Merge branch 'e2e-tests/p1' of https://github.com/cowprotocol/cowswap…
shoom3301 Aug 25, 2026
7902def
chore: reduce scope
shoom3301 Aug 25, 2026
c6eab4b
Merge branch 'develop' of https://github.com/cowprotocol/cowswap into…
shoom3301 Aug 27, 2026
f1aaeed
chore: pnpm lock
shoom3301 Aug 27, 2026
e275d6c
Merge branch 'e2e-tests/p1' of https://github.com/cowprotocol/cowswap…
shoom3301 Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .env.local.example
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,3 @@ REACT_APP_TG_DEV_BYPASS=true
# End To End Test
#######################################
# ⚠️ Required for E2E tests to run

# Cypress Integration Tests
CYPRESS_INTEGRATION_TEST_PRIVATE_KEY=
CYPRESS_INTEGRATION_TESTS_ALCHEMY_KEY=
CYPRESS_INTEGRATION_TESTS_INFURA_KEY=
64 changes: 1 addition & 63 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -187,69 +187,9 @@ jobs:
- name: Run typecheck
run: pnpm run typecheck

integration-tests:
name: Cypress
if: ${{ false }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: Increase watchers
run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

- name: Install pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8

- name: Set up node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm

- name: Install dependencies
run: pnpm run install:ci

- name: Install Cypress binary
working-directory: apps/cowswap-frontend-e2e
run: npx cypress install

- name: Start server in the background
run: pnpm run preview &

# Actually run tests, building repo
- name: Cypress run
id: cypress-run
uses: cypress-io/github-action@b7a7441d775af8f8b9d19945c10dd689a51dba68 # v7.2.0
with:
wait-on: http://[::1]:3000
wait-on-timeout: 600
install: false
working-directory: apps/cowswap-frontend-e2e
env:
CYPRESS_INTEGRATION_TEST_PRIVATE_KEY: ${{ secrets.CYPRESS_INTEGRATION_TEST_PRIVATE_KEY }}
CYPRESS_INTEGRATION_TESTS_ALCHEMY_KEY: ${{ secrets.CYPRESS_INTEGRATION_TESTS_ALCHEMY_KEY }}
CYPRESS_INTEGRATION_TESTS_INFURA_KEY: ${{ secrets.CYPRESS_INTEGRATION_TESTS_INFURA_KEY }}

# - uses: actions/upload-artifact@v3
# if: always()
# with:
# name: cypress-videos
# path: |
# cypress-custom/videos
# cypress-custom/screenshots

# Open tmate ssh connection on failure for debugging
# Uncomment when needed and push upstream
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
# if: ${{ failure() }}

notify-failure:
name: Notify Slack on Failure
needs: [setup, test, lint, typecheck, agent-harness, integration-tests]
needs: [setup, test, lint, typecheck, agent-harness]
runs-on: ubuntu-latest
if: always() && failure() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop')

Expand All @@ -261,7 +201,6 @@ jobs:
[ "$LINT_RESULT" = "failure" ] && failed_jobs+=("Lint")
[ "$TYPECHECK_RESULT" = "failure" ] && failed_jobs+=("Typecheck")
[ "$AGENT_HARNESS_RESULT" = "failure" ] && failed_jobs+=("Agent Harness")
[ "$INTEGRATION_TESTS_RESULT" = "failure" ] && failed_jobs+=("Cypress")

if [ ${#failed_jobs[@]} -eq 0 ]; then
failure_summary="CI"
Expand All @@ -280,4 +219,3 @@ jobs:
LINT_RESULT: ${{ needs.lint.result }}
TYPECHECK_RESULT: ${{ needs.typecheck.result }}
AGENT_HARNESS_RESULT: ${{ needs.agent-harness.result }}
INTEGRATION_TESTS_RESULT: ${{ needs.integration-tests.result }}
60 changes: 60 additions & 0 deletions .github/workflows/e2e-pw-nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: E2E PW nightly

on:
schedule:
- cron: '0 2 * * *' # every day at 2:00 AM
workflow_dispatch:

jobs:
full:
runs-on: ubuntu-latest
timeout-minutes: 90
permissions:
contents: read
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4]
env:
INTEGRATION_TEST_PRIVATE_KEY: ${{ secrets.INTEGRATION_TEST_PRIVATE_KEY }}
REACT_APP_NETWORK_URL_11155111: ${{ secrets.REACT_APP_NETWORK_URL_11155111 }}
REACT_APP_NETWORK_URL_1: ${{ secrets.REACT_APP_NETWORK_URL_1 }}
E2E_PW_MM_SEED: ${{ secrets.E2E_PW_MM_SEED }}
CI: 'true'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: lts/jod
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @cowprotocol/cowswap-e2e-pw exec playwright install --with-deps chromium
- run: pnpm --filter @cowprotocol/cowswap-e2e-pw exec playwright test --shard=${{ matrix.shard }}/4
- if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: playwright-report-shard-${{ matrix.shard }}
path: apps/cowswap-e2e-tests/playwright-report
retention-days: 14

notify-failure:
name: Notify Slack on Failure
needs: [full]
runs-on: ubuntu-latest
if: always() && failure()
permissions:
contents: read

steps:
- name: Notify Failure
run: |
curl -X POST -H "Content-type: application/json" --data "{\"text\": \"❌ E2E PW nightly failed on \`$REF_NAME\`. <$SERVER_URL/$REPOSITORY/actions/runs/$RUN_ID|See run $RUN_ID on GH>.\"}" "$SLACK_WEBHOOK_URL"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_WEB_E2E_ALERT }}
REF_NAME: ${{ github.ref_name }}
SERVER_URL: ${{ github.server_url }}
REPOSITORY: ${{ github.repository }}
RUN_ID: ${{ github.run_id }}
45 changes: 45 additions & 0 deletions .github/workflows/e2e-pw-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: E2E PW smoke

on:
pull_request:
paths:
- 'apps/cowswap-frontend/**'
- 'apps/cowswap-e2e-tests/**'
- 'libs/**'
- 'package.json'
- 'pnpm-lock.yaml'

concurrency:
group: e2e-pw-smoke-${{ github.ref }}
cancel-in-progress: true

jobs:
smoke:
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
env:
INTEGRATION_TEST_PRIVATE_KEY: ${{ secrets.INTEGRATION_TEST_PRIVATE_KEY }}
REACT_APP_NETWORK_URL_11155111: ${{ secrets.REACT_APP_NETWORK_URL_11155111 }}
REACT_APP_NETWORK_URL_1: ${{ secrets.REACT_APP_NETWORK_URL_1 }}
E2E_PW_MM_SEED: ${{ secrets.E2E_PW_MM_SEED }}
CI: 'true'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: lts/jod
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @cowprotocol/cowswap-e2e-pw exec playwright install --with-deps chromium
- run: pnpm e2e:smoke
- if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: playwright-report
path: apps/cowswap-e2e-tests/playwright-report
retention-days: 7
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,6 @@ CLAUDE.md
# Serena project files
.serena/
skills-lock.json

# Subagent-driven-development scratch workspace (ledgers, briefs, review packages)
.superpowers/
4 changes: 2 additions & 2 deletions .mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ queue_rules:
- name: default
conditions:
- check-success=Deploy
- check-success=Cypress
- check-success=smoke

pull_request_rules:
- name: Merge approved and green PRs when tagged with 'Auto-merge'
conditions:
- '#approved-reviews-by>=2'
- label="Auto-merge"
- check-success=Deploy
- check-success=Cypress
- check-success=smoke
actions:
queue:
method: squash
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ Normative language:
- Hardening roadmap (next enforcement steps): [`docs/HARNESS_HARDENING.md`](./docs/HARNESS_HARDENING.md)
- Frontend-specific additive rules: [`apps/cowswap-frontend/AGENTS.md`](./apps/cowswap-frontend/AGENTS.md)
- Other app-local commands/overrides: `apps/*/AGENTS.md`
- E2E tests (Playwright): `apps/cowswap-e2e-tests/AGENTS.md`

## Branch-Scoped AGENTS Task Protocol

Expand Down
43 changes: 27 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,31 +147,42 @@ pnpm run cosmos

# 🤓 Development

## Integration test
## E2E tests

> ⚠️ To run the tests. Make sure you add the required environment variables to
> your root `.env.local` file with:
CoW Swap's e2e suite lives in [`apps/cowswap-e2e-tests`](apps/cowswap-e2e-tests) (Playwright +
Synpress). See that app's [README](apps/cowswap-e2e-tests/README.md) for the full guide — mocks, page
objects, wallet fixtures, and troubleshooting.

> ⚠️ Add the required environment variables to your root `.env.local` file:
>
> - `CYPRESS_INTEGRATION_TEST_PRIVATE_KEY=<your-private-key>`: Private key
> - `CYPRESS_INTEGRATION_TESTS_INFURA_KEY=<your-infura-key>`: Infura key
> - `CYPRESS_INTEGRATION_TESTS_ALCHEMY_KEY=<your-alchemy-key>`: Alchemy key (preferred if both are set)
> - `INTEGRATION_TEST_PRIVATE_KEY=<a throwaway Sepolia private key>`
> - `REACT_APP_NETWORK_URL_11155111=<a Sepolia RPC URL>`

To launch it with our development server (so you have live-reloading):
Most specs — including the PR smoke subset run in CI — use a fast mock wallet fixture and need no
setup beyond the env vars above. A separate Synpress fixture drives a real MetaMask extension for
scenarios that must exercise actual wallet UI; only specs using *that* fixture need a pre-built
cache:

```bash
# Terminal 1
pnpm run start
# Terminal 2
pnpm run e2e
pnpm e2e:build-cache
```

If we want to use the Cypress UI, with the production build:
> Neither the `e2e-pw-smoke` nor `e2e-pw-nightly` CI workflow runs this step — no spec in the
> suite currently uses the Synpress fixture, so CI never touches `.cache-synpress`. If a spec
> starts using it, its workflow must build or restore the cache first.

Then run the suite. Playwright builds and serves the app itself, so there's no need to start a dev
server in a separate terminal:

```bash
# Terminal 1
npx nx run cowswap-frontend:serve-static --port 3000
# Terminal 2
pnpm run e2e:open
# Full suite
pnpm e2e

# PR smoke subset only
pnpm e2e:smoke

# Playwright UI mode, for interactive debugging
pnpm e2e:ui
```

## Analyze build
Expand Down
3 changes: 3 additions & 0 deletions apps/cowswap-e2e-tests/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
REACT_APP_NETWORK_URL_11155111=https://ethereum-sepolia-rpc.publicnode.com
REACT_APP_NETWORK_URL_1=https://ethereum-rpc.publicnode.com
INTEGRATION_TEST_PRIVATE_KEY=0x000000
8 changes: 8 additions & 0 deletions apps/cowswap-e2e-tests/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules/
dist/
test-results/
playwright-report/
.playwright/
.cache-synpress/
coverage-report.md
.env
Loading
Loading