Skip to content

Commit fd1190d

Browse files
committedMar 7, 2025·
flytt script tibake til workflow, fikk det ikke til å funke
1 parent 39d6d5a commit fd1190d

File tree

2 files changed

+95
-113
lines changed

2 files changed

+95
-113
lines changed
 

‎.github/workflows/visual-changes-bot.yml

+95-1
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,98 @@ jobs:
4747
uses: actions/github-script@v7
4848
with:
4949
script: |
50-
require('../../packages/nextjs/playwright/handle-review.js')
50+
try {
51+
const { repo, owner } = context.repo;
52+
53+
// Get PR number from event context
54+
let prNumber;
55+
if (context.payload.pull_request) {
56+
prNumber = context.payload.pull_request.number;
57+
} else {
58+
console.log('No PR number found in context');
59+
return;
60+
}
61+
62+
console.log('PR number:', prNumber);
63+
64+
// Add a small delay to ensure files are available
65+
await new Promise(resolve => setTimeout(resolve, 5000));
66+
67+
const changedFiles = await github.rest.pulls.listFiles({
68+
owner,
69+
repo,
70+
pull_number: prNumber
71+
});
72+
73+
console.log('Total files in PR:', changedFiles.data.length);
74+
console.log('All files in PR:', changedFiles.data.map(f => `${f.filename} (${f.status})`));
75+
76+
// Separate files by status
77+
const modifiedOrAddedPngs = changedFiles.data.filter(file =>
78+
file.filename.endsWith('.png') &&
79+
(file.status === 'modified' || file.status === 'added')
80+
);
81+
82+
const removedPngs = changedFiles.data.filter(file =>
83+
file.filename.endsWith('.png') &&
84+
file.status === 'removed'
85+
);
86+
87+
console.log('Modified/Added PNG files:', modifiedOrAddedPngs.map(f => `${f.filename} (${f.status})`));
88+
console.log('Removed PNG files:', removedPngs.map(f => `${f.filename} (${f.status})`));
89+
90+
if (changedFiles.data.length === 0) {
91+
console.log('Warning: No files detected in PR. This might be a timing issue.');
92+
return;
93+
}
94+
95+
// Only consider files as "changed" if they are modified or added
96+
const hasScreenshotChanges = modifiedOrAddedPngs.length > 0;
97+
console.log('Has active screenshot changes:', hasScreenshotChanges);
98+
99+
const reviews = await github.rest.pulls.listReviews({
100+
owner,
101+
repo,
102+
pull_number: prNumber
103+
});
104+
105+
const REVIEW_MARKER = '<!-- playwright-screenshot-bot -->';
106+
107+
const botReview = reviews.data.find(review =>
108+
review.user.login === 'github-actions[bot]' &&
109+
review.state === 'CHANGES_REQUESTED' &&
110+
review.body.includes(REVIEW_MARKER)
111+
);
112+
113+
console.log('Found screenshot bot review:', botReview ? 'yes' : 'no');
114+
115+
if (hasScreenshotChanges && !botReview) {
116+
console.log('Creating new review');
117+
const filesUrl = `https://github.com/${owner}/${repo}/pull/${prNumber}/files?file-filters[]=.png&file-filters[]=^playwright/`;
118+
await github.rest.pulls.createReview({
119+
owner,
120+
repo,
121+
pull_number: prNumber,
122+
body: `${REVIEW_MARKER}\n## 👀 Visual changes detected\n\nPlease [review the screenshot changes](${filesUrl}) before merging.`,
123+
event: 'REQUEST_CHANGES'
124+
});
125+
} else if (!hasScreenshotChanges && botReview) {
126+
console.log('Dismissing review because no PNG changes found');
127+
await github.rest.pulls.dismissReview({
128+
owner,
129+
repo,
130+
pull_number: prNumber,
131+
review_id: botReview.id,
132+
message: `${REVIEW_MARKER}\nVisual changes have been reverted`
133+
});
134+
} else {
135+
console.log('No action needed:',
136+
hasScreenshotChanges ? 'Has changes' : 'No changes',
137+
botReview ? 'Has review' : 'No review'
138+
);
139+
}
140+
} catch (error) {
141+
console.log('Error:', error);
142+
console.log('Error details:', error.message);
143+
core.setFailed('Failed to handle review');
144+
}

‎packages/nextjs/playwright/handle-review.js

-112
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.