-
Notifications
You must be signed in to change notification settings - Fork 34
chore(percy): added automated targeted Percy build on PRs and releases #152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
05791d7
a427f77
4132876
ca262d1
ba01d7a
93a6d54
f53ac16
f6a76a4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,67 @@ | ||
| # This workflow runs Percy visual regression tests after a PR tagged with "package: skin" | ||
| # is merged into the main branch. It extracts the list of stories from the PR body | ||
| # and runs snapshots for those stories to update the visual regression baselines. | ||
|
|
||
| name: Percy Merged Visual Regression Baselines | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - main | ||
|
|
||
| jobs: | ||
| post-merge-snapshots: | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| # Checkout the repository | ||
| - name: Checkout code | ||
| uses: actions/checkout@v3 | ||
|
|
||
| # Set up Node.js | ||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 22 | ||
|
|
||
| # Install dependencies | ||
| - name: Install dependencies | ||
| run: npm install | ||
| working-directory: ./packages/skin | ||
|
|
||
| # Extract target stories from PR body | ||
| - name: Extract target stories | ||
| id: extract_stories | ||
| run: | | ||
| # Get the last merged PR details | ||
| PR_BODY=$(gh pr view $(git log -1 --pretty=format:"%s" | grep -oP '#\d+') --json body -q '.body') | ||
| if [[ $PR_BODY == *"package: skin"* ]]; then | ||
| STORIES=$(echo "$PR_BODY" | awk '/Percy Stories/{getline; print}') | ||
| if [ -z "$STORIES" ]; then | ||
| echo "No Percy Stories found in PR body." | ||
| exit 0 | ||
| fi | ||
| echo "stories=$STORIES" >> $GITHUB_ENV | ||
| else | ||
| echo "No relevant PR found for package: skin." | ||
| exit 0 | ||
| fi | ||
| working-directory: ./packages/skin | ||
|
|
||
| # Debug: Print extracted stories | ||
| - name: Debug extracted stories | ||
| run: echo "Extracted stories: $stories" | ||
| working-directory: ./packages/skin | ||
|
|
||
| # Run Percy for the extracted stories | ||
| - name: Run Percy visual tests | ||
| env: | ||
| PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} | ||
| run: | | ||
| if [ -z "$stories" ]; then | ||
| echo "No target stories found. Skipping Percy tests." | ||
| exit 0 | ||
| fi | ||
| echo "Running Percy for stories: $stories" | ||
| npm run snapshots "$stories" | ||
| working-directory: ./packages/skin | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| # This workflow runs Percy visual regression tests for pull requests. It extracts the list of stories | ||
| # from the PR body and runs snapshots for those stories to validate visual changes before merging. | ||
| # If Percy detects visual differences, the workflow fails to block merging. | ||
|
|
||
| name: Percy PR Visual Regression Tests | ||
|
|
||
| on: | ||
| pull_request: | ||
| types: | ||
| - opened | ||
| - synchronize | ||
| - reopened | ||
| - edited | ||
| - labeled | ||
|
|
||
| jobs: | ||
| visual-regression: | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| # Checkout the repository | ||
| - name: Checkout code | ||
| uses: actions/checkout@v3 | ||
|
|
||
| # Set up Node.js | ||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 22 | ||
ArtBlue marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| # Install dependencies | ||
| - name: Install dependencies | ||
| run: npm install | ||
| working-directory: ./packages/skin | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe all the dev depdencies are in the root. Might want to move that to the root.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I thought about that before going in this direction. What benefits would that have vs. this option? I'm fine doing that, but it's a fairly large change... trying to make sure the benefits outweigh the cost.
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Im just worried that some dev deps might not be added
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, I think this CI issue is due to no dev deps being installed. Should probably remove working-directory
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't it just missing |
||
|
|
||
| # Extract target stories from PR body | ||
| - name: Extract target stories | ||
| id: extract_stories | ||
| env: | ||
| PR_BODY: ${{ github.event.pull_request.body }} | ||
| run: | | ||
| STORIES=$(echo "PR_BODY" | awk '/Percy Stories/{getline; print}') | ||
| if [ -z "$STORIES" ]; then | ||
| echo "No Percy Stories found in PR body." | ||
| exit 0 | ||
| fi | ||
| echo "stories=$STORIES" >> $GITHUB_ENV | ||
agliga marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| working-directory: ./packages/skin | ||
|
|
||
| # Debug: Print extracted stories | ||
| - name: Debug extracted stories | ||
| run: echo "Extracted stories: $stories" | ||
| working-directory: ./packages/skin | ||
|
|
||
| # Run Percy for the extracted stories | ||
| - name: Run Percy visual tests | ||
| env: | ||
| PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} | ||
| run: npm run snapshots --stories "$stories" | ||
| working-directory: ./packages/skin | ||
ArtBlue marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
Uh oh!
There was an error while loading. Please reload this page.