-
Notifications
You must be signed in to change notification settings - Fork 25
130 lines (114 loc) · 4.1 KB
/
next-internal-cron.yml
File metadata and controls
130 lines (114 loc) · 4.1 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
name: next-internal cron
on:
schedule:
# Run daily at 6am GMT (cron format: minute hour day month weekday)
- cron: '0 6 * * *'
workflow_dispatch: # Allow manual triggering
env:
CI: true
permissions:
contents: read
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
name: Install pnpm
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build next-internal package
run: pnpm exec turbo build --filter=@generaltranslation/next-internal
- name: Install test dependencies
working-directory: packages/next-internal/tests/latest
run: pnpm i
- name: Install Playwright Browsers
working-directory: packages/next-internal/tests/latest
run: npx playwright install --with-deps
- name: Run Playwright tests
working-directory: packages/next-internal/tests/latest
run: npx playwright test
- name: Get Next.js version
if: always()
id: next_version
working-directory: packages/next-internal/tests/latest
run: echo "version=$(npm view next version)" >> $GITHUB_OUTPUT
- name: Upload Playwright Report
id: upload-playwright
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: packages/next-internal/tests/latest/playwright-report/
retention-days: 30
- name: Upload Test Results
id: upload-test-results
uses: actions/upload-artifact@v4
if: failure()
with:
name: test-results
path: packages/next-internal/tests/latest/test-results/
retention-days: 30
if-no-files-found: ignore
- name: Send Slack notification on failure
if: failure()
uses: slackapi/slack-github-action@v2.1.1
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
webhook-type: incoming-webhook
payload: |
{
"text": "🚨 next-internal Tests Failed",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "🚨 *next-internal Playwright tests have failed!*\n\n📋 *Details:*\n• Workflow: `${{ github.workflow }}`\n• Repository: `${{ github.repository }}`\n• Branch: `${{ github.head_ref || github.ref_name }}`\n• Next.js Version: `${{ steps.next_version.outputs.version }}`\n• Commit: `${{ github.sha }}`"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "🔍 *Check the test results and artifacts for debugging.*"
}
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View Run"
},
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "📊 HTML Report"
},
"url": "${{ steps.upload-playwright.outputs.artifact-url }}"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "🔍 Test Results"
},
"url": "${{ steps.upload-test-results.outputs.artifact-url }}"
}
]
}
]
}