Repository navigation
181 lines (165 loc) · 6.24 KB
/
Copy pathcanary.yml
File metadata and controls
181 lines (165 loc) · 6.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
name: 'CI: Canary Tests'
on:
schedule:
# Run every day at midnight
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
commit:
description: If the commit you want to test isn't the head of a branch, provide its SHA here
required: false
env:
HEAD_COMMIT: ${{ github.event.inputs.commit || github.sha }}
CACHED_BUILD_PATHS: |
${{ github.workspace }}/packages/*/*.tgz
${{ github.workspace }}/dev-packages/test-utils/*.tgz
${{ github.workspace }}/node_modules
${{ github.workspace }}/packages/*/node_modules
${{ github.workspace }}/dev-packages/*/node_modules
${{ github.workspace }}/dev-packages/*/build
${{ github.workspace }}/packages/*/build
permissions:
contents: read
issues: write
jobs:
job_e2e_prepare:
name: Prepare E2E Canary tests
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- name: Check out current commit
uses: actions/checkout@v7
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Install pnpm
uses: ./.github/actions/install-pnpm
- name: Set up Node
uses: actions/setup-node@v7
with:
node-version-file: 'package.json'
- name: Check canary cache
uses: actions/cache@v6.1.0
with:
path: ${{ env.CACHED_BUILD_PATHS }}
key: canary-${{ env.HEAD_COMMIT }}
- name: Install dependencies
run: pnpm install
- name: Build packages
run: pnpm run build
- name: Build tarballs
run: pnpm run build:tarball
job_e2e_tests:
name: E2E ${{ matrix.label }} Test
needs: [job_e2e_prepare]
runs-on: ubuntu-24.04
timeout-minutes: 20
env:
# We just use a dummy DSN here, only send to the tunnel anyhow
E2E_TEST_DSN: 'https://username@domain/123'
# Needed because some apps expect a certain prefix
NEXT_PUBLIC_E2E_TEST_DSN: 'https://username@domain/123'
PUBLIC_E2E_TEST_DSN: 'https://username@domain/123'
REACT_APP_E2E_TEST_DSN: 'https://username@domain/123'
E2E_TEST_SENTRY_ORG_SLUG: 'sentry-javascript-sdks'
E2E_TEST_SENTRY_PROJECT: 'sentry-javascript-e2e-tests'
strategy:
fail-fast: false
matrix:
include:
- test-application: 'angular-22'
build-command: 'test:build-canary'
label: 'angular-22 (next)'
- test-application: 'create-react-app'
build-command: 'test:build-canary'
label: 'create-react-app (canary)'
- test-application: 'nextjs-app-dir'
build-command: 'test:build-15'
label: 'nextjs-app-dir (next@15)'
- test-application: 'nextjs-14'
build-command: 'test:build-canary'
label: 'nextjs-14 (canary)'
- test-application: 'nextjs-14'
build-command: 'test:build-latest'
label: 'nextjs-14 (latest)'
- test-application: 'nextjs-15'
build-command: 'test:build-latest'
label: 'nextjs-15 (latest)'
- test-application: 'nextjs-16'
build-command: 'test:build-canary'
label: 'nextjs-16 (canary)'
- test-application: 'nextjs-16'
build-command: 'test:build-canary-webpack'
label: 'nextjs-16 (canary-webpack)'
- test-application: 'react-create-hash-router'
build-command: 'test:build-canary'
label: 'react-create-hash-router (canary)'
- test-application: 'react-router-6'
build-command: 'test:build-canary'
label: 'react-router-6 (canary)'
- test-application: 'nuxt-3'
build-command: 'test:build-canary'
label: 'nuxt-3 (canary)'
- test-application: 'nuxt-4'
build-command: 'test:build-canary'
label: 'nuxt-4 (canary)'
- test-application: 'tanstackstart-react'
build-command: 'test:build-latest'
label: 'tanstackstart-react (latest)'
- test-application: 'nestjs-12'
build-command: 'test:build-latest'
label: 'nestjs-12 (latest)'
steps:
- name: Check out current commit
uses: actions/checkout@v7
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Install pnpm
uses: ./.github/actions/install-pnpm
- name: Set up Node
uses: actions/setup-node@v7
with:
node-version-file: 'dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/package.json'
- name: Restore canary cache
uses: actions/cache/restore@v6.1.0
with:
path: ${{ env.CACHED_BUILD_PATHS }}
key: canary-${{ env.HEAD_COMMIT }}
- name: Prepare e2e tests
run: pnpm run test:prepare
working-directory: dev-packages/e2e-tests
- name: Validate test setup
run: pnpm run test:validate
working-directory: dev-packages/e2e-tests
- name: Copy to temp
run:
pnpm run ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp
}}/test-application
working-directory: dev-packages/e2e-tests
- name: Add pnpm overrides
run:
pnpm run ci:pnpm-overrides ${{ runner.temp }}/test-application ${{ github.workspace
}}/dev-packages/e2e-tests/packed
working-directory: dev-packages/e2e-tests
- name: Build E2E app
working-directory: ${{ runner.temp }}/test-application
timeout-minutes: 7
run: pnpm ${{ matrix.build-command }}
- name: Install Playwright
uses: ./.github/actions/install-playwright
with:
browsers: chromium
cwd: ${{ runner.temp }}/test-application
- name: Run E2E test
working-directory: ${{ runner.temp }}/test-application
timeout-minutes: 15
run: pnpm test:assert
- name: Create Issue
if: failure() && github.event_name == 'schedule'
uses: JasonEtco/create-an-issue@1b14a70e4d8dc185e5cc76d3bec9eab20257b2c5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RUN_LINK: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
TITLE: ${{ matrix.label }} Test Failed
with:
filename: .github/CANARY_FAILURE_TEMPLATE.md
update_existing: true