@cypress/github-action 6.10.8 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -103,7 +103,7 @@ jobs:
103
103
  # Install npm dependencies, cache them correctly
104
104
  # and run all Cypress tests
105
105
  - name: Cypress run
106
- uses: cypress-io/github-action@v6
106
+ uses: cypress-io/github-action@v7
107
107
  ```
108
108
 
109
109
  [![End-to-End example](https://github.com/cypress-io/github-action/actions/workflows/example-basic.yml/badge.svg)](.github/workflows/example-basic.yml)
@@ -126,7 +126,7 @@ jobs:
126
126
  - name: Checkout
127
127
  uses: actions/checkout@v6
128
128
  - name: Cypress run
129
- uses: cypress-io/github-action@v6
129
+ uses: cypress-io/github-action@v7
130
130
  with:
131
131
  component: true
132
132
  ```
@@ -139,20 +139,20 @@ See the example project [component-tests](examples/component-tests/) and the [ex
139
139
 
140
140
  **Best practice:**
141
141
 
142
- Our examples specify using branch [v6](https://github.com/cypress-io/github-action/tree/v6) which is the action's recommended major version:
142
+ Our examples specify using branch `v7` which is the action's recommended major version:
143
143
 
144
144
  ```yml
145
145
  - name: Cypress run
146
- uses: cypress-io/github-action@v6
146
+ uses: cypress-io/github-action@v7
147
147
  ```
148
148
 
149
- When using `cypress-io/github-action@v6` from your workflow file, you will automatically use the latest [tag](https://github.com/cypress-io/github-action/tags) from branch [v6](https://github.com/cypress-io/github-action/tree/v6).
149
+ When using `cypress-io/github-action@v7` from your workflow file, you will automatically use the latest [tag](https://github.com/cypress-io/github-action/tags) from branch `v7`.
150
150
 
151
151
  Alternatively, to mitigate unforeseen breaks, bind to a specific [tag](https://github.com/cypress-io/github-action/tags), for example:
152
152
 
153
153
  ```yml
154
154
  - name: Cypress run
155
- uses: cypress-io/github-action@v6.1.0
155
+ uses: cypress-io/github-action@v7.0.0
156
156
  ```
157
157
 
158
158
  The changes associated with each tag are shown under GitHub's [releases](https://github.com/cypress-io/github-action/releases) list. Refer also to the [CHANGELOG](./CHANGELOG.md) for an overview of major changes.
@@ -160,7 +160,7 @@ The changes associated with each tag are shown under GitHub's [releases](https:/
160
160
  The workflows in the [examples](./examples/) directory use the latest commit from the repo's current branch. This allows all tests to run in CI before release. If you copy any of the examples to your own repo, you should replace `./` and specify instead the action and version as described above.
161
161
 
162
162
  ```yml
163
- - uses: ./ # replace with cypress-io/github-action@v6
163
+ - uses: ./ # replace with cypress-io/github-action@v7
164
164
  ```
165
165
 
166
166
  ### Browser
@@ -178,7 +178,7 @@ jobs:
178
178
  name: E2E on Chrome
179
179
  steps:
180
180
  - uses: actions/checkout@v6
181
- - uses: cypress-io/github-action@v6
181
+ - uses: cypress-io/github-action@v7
182
182
  with:
183
183
  browser: chrome
184
184
  ```
@@ -201,7 +201,7 @@ jobs:
201
201
  - uses: browser-actions/setup-chrome@v2
202
202
  with:
203
203
  chrome-version: 140
204
- - uses: cypress-io/github-action@v6
204
+ - uses: cypress-io/github-action@v7
205
205
  with:
206
206
  browser: chrome-for-testing
207
207
  ```
@@ -219,7 +219,7 @@ jobs:
219
219
  name: E2E on Firefox
220
220
  steps:
221
221
  - uses: actions/checkout@v6
222
- - uses: cypress-io/github-action@v6
222
+ - uses: cypress-io/github-action@v7
223
223
  with:
224
224
  browser: firefox
225
225
  ```
@@ -237,7 +237,7 @@ jobs:
237
237
  name: E2E on Edge
238
238
  steps:
239
239
  - uses: actions/checkout@v6
240
- - uses: cypress-io/github-action@v6
240
+ - uses: cypress-io/github-action@v7
241
241
  with:
242
242
  browser: edge
243
243
  ```
@@ -256,7 +256,7 @@ jobs:
256
256
  runs-on: ubuntu-24.04
257
257
  steps:
258
258
  - uses: actions/checkout@v6
259
- - uses: cypress-io/github-action@v6
259
+ - uses: cypress-io/github-action@v7
260
260
  with:
261
261
  browser: chrome
262
262
  headed: true
@@ -279,7 +279,7 @@ jobs:
279
279
  options: --user 1001
280
280
  steps:
281
281
  - uses: actions/checkout@v6
282
- - uses: cypress-io/github-action@v6
282
+ - uses: cypress-io/github-action@v7
283
283
  with:
284
284
  browser: chrome
285
285
  ```
@@ -303,7 +303,7 @@ jobs:
303
303
  options: --user 1001
304
304
  steps:
305
305
  - uses: actions/checkout@v6
306
- - uses: cypress-io/github-action@v6
306
+ - uses: cypress-io/github-action@v7
307
307
  with:
308
308
  browser: chrome
309
309
  env:
@@ -329,7 +329,7 @@ jobs:
329
329
  uses: actions/checkout@v6
330
330
 
331
331
  - name: Cypress run with env
332
- uses: cypress-io/github-action@v6
332
+ uses: cypress-io/github-action@v7
333
333
  with:
334
334
  env: host=api.dev.local,port=4222
335
335
  ```
@@ -347,7 +347,7 @@ jobs:
347
347
  uses: actions/checkout@v6
348
348
 
349
349
  - name: Cypress run with env
350
- uses: cypress-io/github-action@v6
350
+ uses: cypress-io/github-action@v7
351
351
  env:
352
352
  CYPRESS_host: api.dev.local
353
353
  CYPRESS_port: 4222
@@ -373,7 +373,7 @@ jobs:
373
373
  uses: actions/checkout@v6
374
374
 
375
375
  - name: Cypress run
376
- uses: cypress-io/github-action@v6
376
+ uses: cypress-io/github-action@v7
377
377
  with:
378
378
  spec: cypress/e2e/spec1.cy.js
379
379
  ```
@@ -403,7 +403,7 @@ jobs:
403
403
  - name: Checkout
404
404
  uses: actions/checkout@v6
405
405
  - name: Cypress run
406
- uses: cypress-io/github-action@v6
406
+ uses: cypress-io/github-action@v7
407
407
  with:
408
408
  project: ./test-subdirectory
409
409
  ```
@@ -436,7 +436,7 @@ jobs:
436
436
  uses: actions/checkout@v6
437
437
 
438
438
  - name: Cypress run
439
- uses: cypress-io/github-action@v6
439
+ uses: cypress-io/github-action@v7
440
440
  with:
441
441
  record: true
442
442
  env:
@@ -465,7 +465,7 @@ jobs:
465
465
  - name: Checkout
466
466
  uses: actions/checkout@v6
467
467
  - name: Cypress run
468
- uses: cypress-io/github-action@v6
468
+ uses: cypress-io/github-action@v7
469
469
  with:
470
470
  record: true
471
471
  env:
@@ -498,7 +498,7 @@ jobs:
498
498
  - name: Checkout
499
499
  uses: actions/checkout@v6
500
500
  - name: Cypress run
501
- uses: cypress-io/github-action@v6
501
+ uses: cypress-io/github-action@v7
502
502
  with:
503
503
  record: true
504
504
  - run: echo "PR number is $CYPRESS_PULL_REQUEST_ID"
@@ -537,7 +537,7 @@ jobs:
537
537
  uses: actions/checkout@v6
538
538
 
539
539
  - name: Cypress run
540
- uses: cypress-io/github-action@v6
540
+ uses: cypress-io/github-action@v7
541
541
  with:
542
542
  record: true
543
543
  env:
@@ -566,8 +566,8 @@ jobs:
566
566
  node: [20, 22, 24, 25]
567
567
  name: E2E on Node v${{ matrix.node }}
568
568
  steps:
569
- - name: Setup Node
570
- uses: actions/setup-node@v4
569
+ - name: Install Node.js
570
+ uses: actions/setup-node@v6
571
571
  with:
572
572
  node-version: ${{ matrix.node }}
573
573
  - run: node -v
@@ -576,7 +576,7 @@ jobs:
576
576
  uses: actions/checkout@v6
577
577
 
578
578
  - name: Cypress run
579
- uses: cypress-io/github-action@v6
579
+ uses: cypress-io/github-action@v7
580
580
  with:
581
581
  record: true
582
582
  tag: node-${{ matrix.node }}
@@ -609,7 +609,7 @@ jobs:
609
609
  uses: actions/checkout@v6
610
610
 
611
611
  - name: Cypress run
612
- uses: cypress-io/github-action@v6
612
+ uses: cypress-io/github-action@v7
613
613
  with:
614
614
  record: true
615
615
  # Cancel the run after 2 failed tests
@@ -634,7 +634,7 @@ jobs:
634
634
  name: Artifacts
635
635
  steps:
636
636
  - uses: actions/checkout@v6
637
- - uses: cypress-io/github-action@v6
637
+ - uses: cypress-io/github-action@v7
638
638
  # after the test run completes store videos and any screenshots
639
639
  - uses: actions/upload-artifact@v6
640
640
  # add the line below to store screenshots only on failures
@@ -666,7 +666,7 @@ jobs:
666
666
  # Install npm dependencies, cache them correctly
667
667
  # and run all Cypress tests with `quiet` parameter
668
668
  - name: Cypress run
669
- uses: cypress-io/github-action@v6
669
+ uses: cypress-io/github-action@v7
670
670
  with:
671
671
  working-directory: examples/quiet
672
672
  quiet: true
@@ -690,7 +690,7 @@ jobs:
690
690
  uses: actions/checkout@v6
691
691
 
692
692
  - name: Cypress run
693
- uses: cypress-io/github-action@v6
693
+ uses: cypress-io/github-action@v7
694
694
  with:
695
695
  config: pageLoadTimeout=100000,baseUrl=http://localhost:3000
696
696
  ```
@@ -713,7 +713,7 @@ jobs:
713
713
  uses: actions/checkout@v6
714
714
 
715
715
  - name: Cypress run
716
- uses: cypress-io/github-action@v6
716
+ uses: cypress-io/github-action@v7
717
717
  with:
718
718
  config-file: cypress.config-alternate.js
719
719
  ```
@@ -749,7 +749,7 @@ jobs:
749
749
  # because of "record" and "parallel" parameters
750
750
  # these containers will load balance all found tests among themselves
751
751
  - name: Cypress run
752
- uses: cypress-io/github-action@v6
752
+ uses: cypress-io/github-action@v7
753
753
  with:
754
754
  record: true
755
755
  parallel: true
@@ -781,10 +781,10 @@ During staged rollout of a new GitHub-hosted runner version, GitHub may provide
781
781
 
782
782
  ```yml
783
783
  - name: Run E2E tests
784
- uses: cypress-io/github-action@v6
784
+ uses: cypress-io/github-action@v7
785
785
 
786
786
  - name: Run Component Testing
787
- uses: cypress-io/github-action@v6
787
+ uses: cypress-io/github-action@v7
788
788
  with:
789
789
  # we have already installed everything
790
790
  install: false
@@ -807,7 +807,7 @@ jobs:
807
807
  - name: Checkout
808
808
  uses: actions/checkout@v6
809
809
  - name: Cypress run
810
- uses: cypress-io/github-action@v6
810
+ uses: cypress-io/github-action@v7
811
811
  with:
812
812
  build: npm run build
813
813
  ```
@@ -826,7 +826,7 @@ jobs:
826
826
  - name: Checkout
827
827
  uses: actions/checkout@v6
828
828
  - name: Cypress run
829
- uses: cypress-io/github-action@v6
829
+ uses: cypress-io/github-action@v7
830
830
  with:
831
831
  start: npm start
832
832
  ```
@@ -845,7 +845,7 @@ jobs:
845
845
  - name: Checkout
846
846
  uses: actions/checkout@v6
847
847
  - name: Cypress run
848
- uses: cypress-io/github-action@v6
848
+ uses: cypress-io/github-action@v7
849
849
  with:
850
850
  # Linux and macOS
851
851
  start: npm start
@@ -871,7 +871,7 @@ jobs:
871
871
  - name: Checkout
872
872
  uses: actions/checkout@v6
873
873
  - name: Cypress run
874
- uses: cypress-io/github-action@v6
874
+ uses: cypress-io/github-action@v7
875
875
  with:
876
876
  start: npm run api, npm run web
877
877
  ```
@@ -901,7 +901,7 @@ jobs:
901
901
  - name: Checkout
902
902
  uses: actions/checkout@v6
903
903
  - name: Cypress run
904
- uses: cypress-io/github-action@v6
904
+ uses: cypress-io/github-action@v7
905
905
  with:
906
906
  start: npm start
907
907
  # quote the url to be safe against YML parsing surprises
@@ -915,7 +915,7 @@ jobs:
915
915
  By default, `wait-on` will retry for 60 seconds. You can pass a custom timeout in seconds using `wait-on-timeout`.
916
916
 
917
917
  ```yml
918
- - uses: cypress-io/github-action@v6
918
+ - uses: cypress-io/github-action@v7
919
919
  with:
920
920
  start: npm start
921
921
  wait-on: 'http://localhost:8080/status'
@@ -926,7 +926,7 @@ By default, `wait-on` will retry for 60 seconds. You can pass a custom timeout i
926
926
  You can wait for multiple URLs to respond by separating urls with a comma
927
927
 
928
928
  ```yml
929
- - uses: cypress-io/github-action@v6
929
+ - uses: cypress-io/github-action@v7
930
930
  with:
931
931
  # API runs on port 3050
932
932
  # Web server runs on port 8080
@@ -940,7 +940,7 @@ The action will wait for the first url to respond, then will check the second ur
940
940
  You can even use your own command (usually by using `npm`, `yarn`, `npx`) to wait for the server to respond. For example, if you want to use the [wait-on](https://github.com/jeffbski/wait-on) utility to ping the server and run the Cypress tests after the server responds:
941
941
 
942
942
  ```yml
943
- - uses: cypress-io/github-action@v6
943
+ - uses: cypress-io/github-action@v7
944
944
  with:
945
945
  start: npm start
946
946
  wait-on: 'npx wait-on --timeout 60000 http://localhost:3000'
@@ -955,7 +955,7 @@ If this action times out waiting for the server to respond, please see [Debuggin
955
955
  The action installs dependencies based on a package manager lock file using default commands described in the [Installation](#installation) section below. If you want to overwrite the default install command you can use the `install-command` option:
956
956
 
957
957
  ```yml
958
- - uses: cypress-io/github-action@v6
958
+ - uses: cypress-io/github-action@v7
959
959
  with:
960
960
  install-command: yarn --frozen-lockfile --silent
961
961
  ```
@@ -990,7 +990,7 @@ jobs:
990
990
  - name: Checkout
991
991
  uses: actions/checkout@v6
992
992
  - name: Cypress run
993
- uses: cypress-io/github-action@v6
993
+ uses: cypress-io/github-action@v7
994
994
  with:
995
995
  command-prefix: 'percy exec -- npx'
996
996
  browser: chrome
@@ -1016,7 +1016,7 @@ Correct example snippet:
1016
1016
  ```yml
1017
1017
  steps:
1018
1018
  - uses: actions/checkout@v6
1019
- - uses: cypress-io/github-action@v6
1019
+ - uses: cypress-io/github-action@v7
1020
1020
  with:
1021
1021
  command: npm run custom-test
1022
1022
  ```
@@ -1039,7 +1039,7 @@ jobs:
1039
1039
  containers: [1, 2, 3]
1040
1040
  steps:
1041
1041
  - uses: actions/checkout@v6
1042
- - uses: cypress-io/github-action@v6
1042
+ - uses: cypress-io/github-action@v7
1043
1043
  with:
1044
1044
  record: true
1045
1045
  parallel: true
@@ -1074,7 +1074,7 @@ jobs:
1074
1074
  needs: ['prepare']
1075
1075
  steps:
1076
1076
  - uses: actions/checkout@v6
1077
- - uses: cypress-io/github-action@v6
1077
+ - uses: cypress-io/github-action@v7
1078
1078
  with:
1079
1079
  record: true
1080
1080
  parallel: true
@@ -1114,7 +1114,7 @@ jobs:
1114
1114
  runs-on: ubuntu-24.04
1115
1115
  steps:
1116
1116
  - uses: actions/checkout@v6
1117
- - uses: cypress-io/github-action@v6
1117
+ - uses: cypress-io/github-action@v7
1118
1118
  with:
1119
1119
  start: npm start
1120
1120
  working-directory: app-test
@@ -1160,7 +1160,7 @@ jobs:
1160
1160
 
1161
1161
  # Cypress has its own package.json in folder "e2e"
1162
1162
  - name: Install Cypress and run tests
1163
- uses: cypress-io/github-action@v6
1163
+ uses: cypress-io/github-action@v7
1164
1164
  with:
1165
1165
  working-directory: e2e
1166
1166
  ```
@@ -1185,13 +1185,13 @@ jobs:
1185
1185
  with:
1186
1186
  version: 10
1187
1187
  - name: Install Node.js
1188
- uses: actions/setup-node@v4
1188
+ uses: actions/setup-node@v6
1189
1189
  with:
1190
- node-version: 22
1190
+ node-version: 24
1191
1191
  cache: 'pnpm'
1192
1192
  cache-dependency-path: examples/basic-pnpm/pnpm-lock.yaml
1193
1193
  - name: Cypress run
1194
- uses: cypress-io/github-action@v6
1194
+ uses: cypress-io/github-action@v7
1195
1195
  with:
1196
1196
  working-directory: examples/basic-pnpm
1197
1197
  ```
@@ -1209,7 +1209,7 @@ The action does not directly support using [pnpm workspaces](https://pnpm.io/wor
1209
1209
  working-directory: examples/start-and-pnpm-workspaces
1210
1210
 
1211
1211
  - name: Cypress test
1212
- uses: cypress-io/github-action@v6
1212
+ uses: cypress-io/github-action@v7
1213
1213
  with:
1214
1214
  install: false
1215
1215
  working-directory: examples/start-and-pnpm-workspaces/packages/workspace-1
@@ -1234,7 +1234,7 @@ jobs:
1234
1234
  - name: Checkout
1235
1235
  uses: actions/checkout@v6
1236
1236
  - name: Cypress run
1237
- uses: cypress-io/github-action@v6
1237
+ uses: cypress-io/github-action@v7
1238
1238
  with:
1239
1239
  working-directory: examples/yarn-classic
1240
1240
  ```
@@ -1258,13 +1258,13 @@ jobs:
1258
1258
  uses: actions/checkout@v6
1259
1259
  - run: corepack enable # (experimental and optional)
1260
1260
  - name: Set up Yarn cache
1261
- uses: actions/setup-node@v4
1261
+ uses: actions/setup-node@v6
1262
1262
  with:
1263
- node-version: 22
1263
+ node-version: 24
1264
1264
  cache: yarn
1265
1265
  cache-dependency-path: examples/yarn-modern/yarn.lock
1266
1266
  - name: Cypress run
1267
- uses: cypress-io/github-action@v6
1267
+ uses: cypress-io/github-action@v7
1268
1268
  with:
1269
1269
  working-directory: examples/yarn-modern
1270
1270
  install-command: yarn install
@@ -1291,7 +1291,7 @@ jobs:
1291
1291
  - name: Checkout
1292
1292
  uses: actions/checkout@v6
1293
1293
  - name: Cypress run
1294
- uses: cypress-io/github-action@v6
1294
+ uses: cypress-io/github-action@v7
1295
1295
  with:
1296
1296
  working-directory: examples/yarn-modern-pnp
1297
1297
  install-command: yarn install
@@ -1319,7 +1319,7 @@ jobs:
1319
1319
  runs-on: ubuntu-24.04
1320
1320
  steps:
1321
1321
  - uses: actions/checkout@v6
1322
- - uses: cypress-io/github-action@v6
1322
+ - uses: cypress-io/github-action@v7
1323
1323
  with:
1324
1324
  working-directory: examples/start-and-yarn-workspaces/workspace-1
1325
1325
  build: yarn run build
@@ -1345,8 +1345,8 @@ jobs:
1345
1345
  node: [20, 22, 24, 25]
1346
1346
  name: E2E on Node v${{ matrix.node }}
1347
1347
  steps:
1348
- - name: Setup Node
1349
- uses: actions/setup-node@v4
1348
+ - name: Install Node.js
1349
+ uses: actions/setup-node@v6
1350
1350
  with:
1351
1351
  node-version: ${{ matrix.node }}
1352
1352
  - name: Checkout
@@ -1354,7 +1354,7 @@ jobs:
1354
1354
  # run Cypress tests and record them under the same run
1355
1355
  # associated with commit SHA and just give a different group name
1356
1356
  - name: Cypress run
1357
- uses: cypress-io/github-action@v6
1357
+ uses: cypress-io/github-action@v7
1358
1358
  with:
1359
1359
  record: true
1360
1360
  group: Tests on Node v${{ matrix.node }}
@@ -1379,11 +1379,11 @@ jobs:
1379
1379
  node: [20, 22, 24, 25]
1380
1380
  name: E2E on Node v${{ matrix.node }}
1381
1381
  steps:
1382
- - uses: actions/setup-node@v4
1382
+ - uses: actions/setup-node@v6
1383
1383
  with:
1384
1384
  node-version: ${{ matrix.node }}
1385
1385
  - uses: actions/checkout@v6
1386
- - uses: cypress-io/github-action@v6
1386
+ - uses: cypress-io/github-action@v7
1387
1387
  ```
1388
1388
 
1389
1389
  See the [Node.js](#nodejs) section for information about supported versions and usage of Node.js.
@@ -1403,13 +1403,13 @@ jobs:
1403
1403
  steps:
1404
1404
  - uses: actions/checkout@v6
1405
1405
  - name: Install dependencies
1406
- uses: cypress-io/github-action@v6
1406
+ uses: cypress-io/github-action@v7
1407
1407
  with:
1408
1408
  # just perform install
1409
1409
  runTests: false
1410
1410
  - run: yarn lint
1411
1411
  - name: Run e2e tests
1412
- uses: cypress-io/github-action@v6
1412
+ uses: cypress-io/github-action@v7
1413
1413
  with:
1414
1414
  # we have already installed all dependencies above
1415
1415
  install: false
@@ -1436,7 +1436,7 @@ jobs:
1436
1436
  steps:
1437
1437
  - uses: actions/checkout@v6
1438
1438
  - name: Build app
1439
- uses: cypress-io/github-action@v6
1439
+ uses: cypress-io/github-action@v7
1440
1440
  with:
1441
1441
  runTests: false # only build app, don't test yet
1442
1442
  build: npm run build
@@ -1460,7 +1460,7 @@ jobs:
1460
1460
  path: build
1461
1461
 
1462
1462
  - name: Cypress tests
1463
- uses: cypress-io/github-action@v6
1463
+ uses: cypress-io/github-action@v7
1464
1464
  with:
1465
1465
  start: npm start # start server using the build artifacts
1466
1466
  ```
@@ -1484,7 +1484,7 @@ If the project has many dependencies, but you want to install just Cypress you c
1484
1484
  node_modules
1485
1485
  key: my-cache-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
1486
1486
  - run: npm i cypress
1487
- - uses: cypress-io/github-action@v6
1487
+ - uses: cypress-io/github-action@v7
1488
1488
  with:
1489
1489
  install: false
1490
1490
  ```
@@ -1504,7 +1504,7 @@ jobs:
1504
1504
  timeout-minutes: 10
1505
1505
  steps:
1506
1506
  - uses: actions/checkout@v6
1507
- - uses: cypress-io/github-action@v6
1507
+ - uses: cypress-io/github-action@v7
1508
1508
  # you can specify individual step timeout too
1509
1509
  timeout-minutes: 5
1510
1510
  ```
@@ -1522,7 +1522,7 @@ jobs:
1522
1522
 
1523
1523
  To migrate from Cypress [CLI run command options](https://on.cypress.io/command-line#Options) to Cypress GitHub Action parameters, check the [CLI Run Option / Action Parameter](#cli-run-option--action-parameter) table below. In most cases, the name of the action parameter is the same as the long form of the `cypress run` CLI option.
1524
1524
 
1525
- Create a [GitHub Actions workflow](https://docs.github.com/en/actions/writing-workflows/quickstart) referring to [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions). The action `cypress-io/github-action@v6` is invoked with the `uses` keyword. Cypress GitHub Action input parameters are specified under the [with](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idstepswith) keyword.
1525
+ Create a [GitHub Actions workflow](https://docs.github.com/en/actions/writing-workflows/quickstart) referring to [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions). The action `cypress-io/github-action@v7` is invoked with the `uses` keyword. Cypress GitHub Action input parameters are specified under the [with](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idstepswith) keyword.
1526
1526
 
1527
1527
  If you have previously been using a [CLI command](https://on.cypress.io/command-line#cypress-run) to run Cypress locally or in a CI environment, you will be familiar with testing commands like this:
1528
1528
 
@@ -1548,7 +1548,7 @@ jobs:
1548
1548
  - name: Check out repo
1549
1549
  uses: actions/checkout@v6
1550
1550
  - name: Cypress run # install dependencies and run Cypress E2E tests
1551
- uses: cypress-io/github-action@v6 # replaces CLI cypress run
1551
+ uses: cypress-io/github-action@v7 # replaces CLI cypress run
1552
1552
  with:
1553
1553
  browser: chrome # replaces CLI option --browser chrome
1554
1554
  spec: cypress/e2e/spec.cy.js # replaces CLI option --spec cypress/e2e/spec.cy.js
@@ -1627,7 +1627,7 @@ You can set the environment variable using GitHub UI interface, or in the workfl
1627
1627
 
1628
1628
  ```yml
1629
1629
  - name: Cypress tests with debug logs
1630
- uses: cypress-io/github-action@v6
1630
+ uses: cypress-io/github-action@v7
1631
1631
  env:
1632
1632
  DEBUG: '@cypress/github-action'
1633
1633
  ```
@@ -1642,7 +1642,7 @@ To see all [Cypress debug logs](https://on.cypress.io/troubleshooting#Print-DEBU
1642
1642
 
1643
1643
  ```yml
1644
1644
  - name: Cypress tests with debug logs
1645
- uses: cypress-io/github-action@v6
1645
+ uses: cypress-io/github-action@v7
1646
1646
  env:
1647
1647
  DEBUG: 'cypress:*'
1648
1648
  ```
@@ -1698,7 +1698,7 @@ This is an example of using the step output `resultsUrl`:
1698
1698
 
1699
1699
  ```yml
1700
1700
  - name: Cypress tests
1701
- uses: cypress-io/github-action@v6
1701
+ uses: cypress-io/github-action@v7
1702
1702
  # let's give this action an ID so we can refer
1703
1703
  # to its output values later
1704
1704
  id: cypress
@@ -1735,7 +1735,7 @@ jobs:
1735
1735
  - name: Checkout
1736
1736
  uses: actions/checkout@v6
1737
1737
  - name: Cypress run
1738
- uses: cypress-io/github-action@v6
1738
+ uses: cypress-io/github-action@v7
1739
1739
  with:
1740
1740
  build: npx cypress info
1741
1741
  ```
@@ -1752,14 +1752,14 @@ jobs:
1752
1752
  - name: Checkout
1753
1753
  uses: actions/checkout@v6
1754
1754
  - name: Cypress install
1755
- uses: cypress-io/github-action@v6
1755
+ uses: cypress-io/github-action@v7
1756
1756
  with:
1757
1757
  # just perform install
1758
1758
  runTests: false
1759
1759
  - name: Cypress info
1760
1760
  run: npx cypress info
1761
1761
  - name: Cypress run
1762
- uses: cypress-io/github-action@v6
1762
+ uses: cypress-io/github-action@v7
1763
1763
  with:
1764
1764
  # we have already installed all dependencies above
1765
1765
  install: false
@@ -1783,7 +1783,7 @@ jobs:
1783
1783
  - name: Checkout
1784
1784
  uses: actions/checkout@v6
1785
1785
  - name: Cypress nightly tests 🌃
1786
- uses: cypress-io/github-action@v6
1786
+ uses: cypress-io/github-action@v7
1787
1787
  ```
1788
1788
 
1789
1789
  [![cron example](https://github.com/cypress-io/github-action/actions/workflows/example-cron.yml/badge.svg)](.github/workflows/example-cron.yml)
@@ -1803,11 +1803,11 @@ jobs:
1803
1803
  steps:
1804
1804
  - uses: actions/checkout@v6
1805
1805
  - name: Cypress headless tests
1806
- uses: cypress-io/github-action@v6
1806
+ uses: cypress-io/github-action@v7
1807
1807
  with:
1808
1808
  summary-title: 'Headless'
1809
1809
  - name: Cypress headed tests
1810
- uses: cypress-io/github-action@v6
1810
+ uses: cypress-io/github-action@v7
1811
1811
  with:
1812
1812
  install: false
1813
1813
  headed: true
@@ -1832,7 +1832,7 @@ jobs:
1832
1832
  - name: Checkout
1833
1833
  uses: actions/checkout@v6
1834
1834
  - name: Cypress run
1835
- uses: cypress-io/github-action@v6
1835
+ uses: cypress-io/github-action@v7
1836
1836
  with:
1837
1837
  publish-summary: false
1838
1838
  ```
@@ -1841,7 +1841,7 @@ jobs:
1841
1841
 
1842
1842
  ### Support
1843
1843
 
1844
- Node.js is required to run this action. The recommended version `v6` supports:
1844
+ Node.js is required to run this action. The recommended version `v7` supports:
1845
1845
 
1846
1846
  - **Node.js** 20.x, 22.x, 24.x and 25.x
1847
1847
 
@@ -1853,7 +1853,7 @@ and is generally aligned with [Node.js's release schedule](https://github.com/no
1853
1853
 
1854
1854
  [![Node versions example](https://github.com/cypress-io/github-action/actions/workflows/example-node-versions.yml/badge.svg)](.github/workflows/example-node-versions.yml)
1855
1855
 
1856
- Cypress itself runs with a fixed Node.js version specified by the [runs.using](https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions) parameter of [action.yml](action.yml). `github-action@v6` uses `node20`.
1856
+ Cypress itself runs with a fixed Node.js version specified by the [runs.using](https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions) parameter of [action.yml](action.yml). `github-action@v7` uses `node24`.
1857
1857
 
1858
1858
  ## Changelog
1859
1859
 
@@ -1861,10 +1861,13 @@ View the [CHANGELOG](./CHANGELOG.md) document for an overview of version changes
1861
1861
 
1862
1862
  ## Compatibility
1863
1863
 
1864
- - `github-action@v6` is the current recommended version, uses `node20` and is compatible with Cypress `10` and above.
1864
+ - `github-action@v7` is the current recommended version, uses `node24` and is compatible with Cypress `10` and above.
1865
+ - `github-action@v6` is deprecated. It uses `node20` which GitHub has deprecated. GitHub Actions will force runners to use `node24` beginning on Mar 4, 2026 - see [Deprecation of Node 20 on GitHub Actions runners](https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/).
1865
1866
  - `github-action@v6.7.9` is the minimum version required to use GitHub Actions caching services. The legacy caching service used by lower versions of the action is no longer available.
1866
1867
  - `github-action` versions `v1` to `v5` are unsupported: they rely on Node.js `12` and `16` in End-of-life status.
1867
1868
 
1869
+ Cypress lists browser compatibility information under [System Requirements](https://docs.cypress.io/app/get-started/install-cypress#Browsers).
1870
+
1868
1871
  ## Contributing
1869
1872
 
1870
1873
  Please see our [Contributing Guideline](./CONTRIBUTING.md) which explains how to contribute fixes or features to the repo and how to test.
package/action.yml CHANGED
@@ -115,7 +115,7 @@ outputs:
115
115
  resultsUrl:
116
116
  description: 'Cypress Cloud URL if the run was recorded'
117
117
  runs:
118
- using: 'node20'
118
+ using: 'node24'
119
119
  main: 'dist/index.js'
120
120
  branding:
121
121
  color: 'green'
package/dist/index.js CHANGED
@@ -2398,6 +2398,18 @@ class CacheServiceClient {
2398
2398
  }
2399
2399
  errorMessage = `${errorMessage}: ${body.msg}`;
2400
2400
  }
2401
+ // Handle rate limiting - don't retry, just warn and exit
2402
+ // For more info, see https://docs.github.com/en/actions/reference/limits
2403
+ if (statusCode === http_client_1.HttpCodes.TooManyRequests) {
2404
+ const retryAfterHeader = response.message.headers['retry-after'];
2405
+ if (retryAfterHeader) {
2406
+ const parsedSeconds = parseInt(retryAfterHeader, 10);
2407
+ if (!isNaN(parsedSeconds) && parsedSeconds > 0) {
2408
+ (0, core_1.warning)(`You've hit a rate limit, your rate limit will reset in ${parsedSeconds} seconds`);
2409
+ }
2410
+ }
2411
+ throw new errors_1.RateLimitError(`Rate limited: ${errorMessage}`);
2412
+ }
2401
2413
  }
2402
2414
  catch (error) {
2403
2415
  if (error instanceof SyntaxError) {
@@ -2406,6 +2418,9 @@ class CacheServiceClient {
2406
2418
  if (error instanceof errors_1.UsageError) {
2407
2419
  throw error;
2408
2420
  }
2421
+ if (error instanceof errors_1.RateLimitError) {
2422
+ throw error;
2423
+ }
2409
2424
  if (errors_1.NetworkError.isNetworkErrorCode(error === null || error === void 0 ? void 0 : error.code)) {
2410
2425
  throw new errors_1.NetworkError(error === null || error === void 0 ? void 0 : error.code);
2411
2426
  }
@@ -2438,8 +2453,7 @@ class CacheServiceClient {
2438
2453
  http_client_1.HttpCodes.BadGateway,
2439
2454
  http_client_1.HttpCodes.GatewayTimeout,
2440
2455
  http_client_1.HttpCodes.InternalServerError,
2441
- http_client_1.HttpCodes.ServiceUnavailable,
2442
- http_client_1.HttpCodes.TooManyRequests
2456
+ http_client_1.HttpCodes.ServiceUnavailable
2443
2457
  ];
2444
2458
  return retryableStatusCodes.includes(statusCode);
2445
2459
  }
@@ -2475,7 +2489,7 @@ function internalCacheTwirpClient(options) {
2475
2489
  "use strict";
2476
2490
 
2477
2491
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2478
- exports.UsageError = exports.NetworkError = exports.GHESNotSupportedError = exports.CacheNotFoundError = exports.InvalidResponseError = exports.FilesNotFoundError = void 0;
2492
+ exports.RateLimitError = exports.UsageError = exports.NetworkError = exports.GHESNotSupportedError = exports.CacheNotFoundError = exports.InvalidResponseError = exports.FilesNotFoundError = void 0;
2479
2493
  class FilesNotFoundError extends Error {
2480
2494
  constructor(files = []) {
2481
2495
  let message = 'No files were found to upload';
@@ -2542,6 +2556,13 @@ UsageError.isUsageErrorMessage = (msg) => {
2542
2556
  return false;
2543
2557
  return msg.includes('insufficient usage');
2544
2558
  };
2559
+ class RateLimitError extends Error {
2560
+ constructor(message) {
2561
+ super(message);
2562
+ this.name = 'RateLimitError';
2563
+ }
2564
+ }
2565
+ exports.RateLimitError = RateLimitError;
2545
2566
  //# sourceMappingURL=errors.js.map
2546
2567
 
2547
2568
  /***/ }),
@@ -9902,7 +9923,7 @@ class HttpClient {
9902
9923
  this._maxRetries = 1;
9903
9924
  this._keepAlive = false;
9904
9925
  this._disposed = false;
9905
- this.userAgent = userAgent;
9926
+ this.userAgent = this._getUserAgentWithOrchestrationId(userAgent);
9906
9927
  this.handlers = handlers || [];
9907
9928
  this.requestOptions = requestOptions;
9908
9929
  if (requestOptions) {
@@ -10382,6 +10403,17 @@ class HttpClient {
10382
10403
  }
10383
10404
  return proxyAgent;
10384
10405
  }
10406
+ _getUserAgentWithOrchestrationId(userAgent) {
10407
+ const baseUserAgent = userAgent || 'actions/http-client';
10408
+ const orchId = process.env['ACTIONS_ORCHESTRATION_ID'];
10409
+ if (orchId) {
10410
+ // Sanitize the orchestration ID to ensure it contains only valid characters
10411
+ // Valid characters: 0-9, a-z, _, -, .
10412
+ const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, '_');
10413
+ return `${baseUserAgent} actions_orchestration_id/${sanitizedId}`;
10414
+ }
10415
+ return baseUserAgent;
10416
+ }
10385
10417
  _performExponentialBackoff(retryNumber) {
10386
10418
  return __awaiter(this, void 0, void 0, function* () {
10387
10419
  retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
@@ -20230,7 +20262,7 @@ function save(namespaces) {
20230
20262
  function load() {
20231
20263
  let r;
20232
20264
  try {
20233
- r = exports.storage.getItem('debug');
20265
+ r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;
20234
20266
  } catch (error) {
20235
20267
  // Swallow
20236
20268
  // XXX (@Qix-) should we be logging these?
@@ -20458,7 +20490,7 @@ function setup(env) {
20458
20490
 
20459
20491
  const split = (typeof namespaces === 'string' ? namespaces : '')
20460
20492
  .trim()
20461
- .replace(' ', ',')
20493
+ .replace(/\s+/g, ',')
20462
20494
  .split(',')
20463
20495
  .filter(Boolean);
20464
20496
 
@@ -101693,7 +101725,7 @@ const supportsColor = {
101693
101725
  /***/ ((module) => {
101694
101726
 
101695
101727
  "use strict";
101696
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"5.0.1","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^2.0.0","@actions/exec":"^2.0.0","@actions/glob":"^0.5.0","@protobuf-ts/runtime-rpc":"^2.11.1","@actions/http-client":"^3.0.0","@actions/io":"^2.0.0","@azure/abort-controller":"^1.1.0","@azure/core-rest-pipeline":"^1.22.0","@azure/storage-blob":"^12.29.1","semver":"^6.3.1"},"devDependencies":{"@types/node":"^24.1.0","@types/semver":"^6.0.0","@protobuf-ts/plugin":"^2.9.4","typescript":"^5.2.2"},"overrides":{"uri-js":"npm:uri-js-replace@^1.0.1","node-fetch":"^3.3.2"}}');
101728
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"5.0.3","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^2.0.0","@actions/exec":"^2.0.0","@actions/glob":"^0.5.0","@protobuf-ts/runtime-rpc":"^2.11.1","@actions/http-client":"^3.0.1","@actions/io":"^2.0.0","@azure/abort-controller":"^1.1.0","@azure/core-rest-pipeline":"^1.22.0","@azure/storage-blob":"^12.29.1","semver":"^6.3.1"},"devDependencies":{"@types/node":"^24.1.0","@types/semver":"^6.0.0","@protobuf-ts/plugin":"^2.9.4","typescript":"^5.2.2"},"overrides":{"uri-js":"npm:uri-js-replace@^1.0.1","node-fetch":"^3.3.2"}}');
101697
101729
 
101698
101730
  /***/ })
101699
101731
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cypress/github-action",
3
- "version": "6.10.8",
3
+ "version": "7.0.0",
4
4
  "description": "GitHub Action for running Cypress end-to-end and component tests",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -39,13 +39,13 @@
39
39
  },
40
40
  "homepage": "https://github.com/cypress-io/github-action#readme",
41
41
  "dependencies": {
42
- "@actions/cache": "5.0.1",
43
- "@actions/core": "2.0.1",
42
+ "@actions/cache": "5.0.3",
43
+ "@actions/core": "2.0.2",
44
44
  "@actions/exec": "2.0.0",
45
45
  "@actions/io": "2.0.0",
46
46
  "@octokit/core": "7.0.6",
47
47
  "argument-vector": "1.0.2",
48
- "debug": "4.4.0",
48
+ "debug": "4.4.3",
49
49
  "find-yarn-workspace-root": "2.0.0",
50
50
  "got": "11.8.6",
51
51
  "hasha": "5.2.2",
@@ -53,16 +53,16 @@
53
53
  "supports-color": "9.3.1"
54
54
  },
55
55
  "devDependencies": {
56
- "@eslint/js": "9.38.0",
57
- "@stylistic/eslint-plugin": "5.5.0",
58
- "@types/node": "24.0.15",
56
+ "@eslint/js": "9.39.2",
57
+ "@stylistic/eslint-plugin": "5.7.0",
58
+ "@types/node": "25.0.8",
59
59
  "@vercel/ncc": "0.38.4",
60
- "eslint": "9.38.0",
61
- "eslint-plugin-cypress": "5.2.0",
62
- "globals": "16.4.0",
60
+ "eslint": "9.39.2",
61
+ "eslint-plugin-cypress": "5.2.1",
62
+ "globals": "17.0.0",
63
63
  "husky": "9.1.7",
64
64
  "markdown-link-check": "3.14.2",
65
- "prettier": "3.6.2"
65
+ "prettier": "3.8.0"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public"