mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
Issue number: N/A --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> We checked `git diff` to see if new screenshots were generated. If no new screenshots were generated then we print a user-friendly message informing the dev what happened. However, `git diff` does not account for untracked changes (i.e. new screenshots). As a result, this prevented new screenshots from being committed. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - To fix this we use the `-N` flag which is short for `--intent-to-add`. This adds an entry with no content which causes the new screenshots to show up when running `git diff`. We later add the contents of the image. Example test run of this working: https://github.com/ionic-team/ionic-framework/actions/runs/6174263712/job/16759260534 ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. -->
58 lines
1.9 KiB
YAML
58 lines
1.9 KiB
YAML
name: 'Update Reference Screenshots'
|
||
description: 'Update Reference Screenshots'
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
|
||
runs:
|
||
using: 'composite'
|
||
steps:
|
||
- uses: actions/setup-node@v3
|
||
with:
|
||
node-version: 18.x
|
||
- uses: actions/download-artifact@v3
|
||
with:
|
||
path: ./artifacts
|
||
- name: Extract Archives
|
||
# This finds all .zip files in the ./artifacts
|
||
# directory, including nested directories.
|
||
# It then unzips every .zip to the root directory
|
||
run: |
|
||
find . -type f -name 'UpdatedScreenshots-*.zip' -exec unzip -q -o -d ../ {} \;
|
||
shell: bash
|
||
working-directory: ./artifacts
|
||
- name: Push Screenshots
|
||
# Configure user as Ionitron
|
||
# and push only the changed .png snapshots
|
||
# to the remote branch.
|
||
# Screenshots are in .gitignore
|
||
# to prevent local screenshots from getting
|
||
# pushed to Git. As a result, we need --force
|
||
# here so that CI generated screenshots can
|
||
# get added to git. Screenshot ground truths
|
||
# should only be added via this CI process.
|
||
run: |
|
||
git config user.name ionitron
|
||
git config user.email hi@ionicframework.com
|
||
|
||
# This adds an empty entry for new
|
||
# screenshot files so we can track them with
|
||
# git diff
|
||
git add src/\*.png --force -N
|
||
|
||
if git diff --exit-code; then
|
||
echo -e "\033[1;31m⚠️ Error: No new screenshots generated ⚠️\033[0m"
|
||
echo -e "\033[1;31mThis means that there were zero visual diffs when running screenshot tests.\033[0m"
|
||
echo -e "\033[1;31mMake sure you have pushed any code changes that would result in visual diffs.\033[0m"
|
||
exit 1
|
||
else
|
||
# This actually adds the contents
|
||
# of the screenshots (including new ones)
|
||
git add src/\*.png --force
|
||
git commit -m "chore(): add updated snapshots"
|
||
git push
|
||
fi
|
||
|
||
shell: bash
|
||
working-directory: ./core
|