Skip to content
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

Version 2 #33

Merged
merged 6 commits into from
Dec 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,3 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- uses: ./
with:
verbose: true
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
node_modules
node_modules/
104 changes: 65 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,67 +17,62 @@ permissions:
contents: read

jobs:
lookup:
prepare:
runs-on: ubuntu-latest
outputs:
actual-sha: ${{ steps.lookup.outputs.actual-sha }}
actual-cache-hit: ${{ steps.lookup.outputs.actual-cache-hit }}
expected-sha: ${{ steps.lookup.outputs.expected-sha }}
expected-cache-hit: ${{ steps.lookup.outputs.expected-cache-hit }}
actual-sha: ${{ steps.prepare.outputs.actual-sha }}
actual-cache-hit: ${{ steps.prepare.outputs.actual-cache-hit }}
expected-sha: ${{ steps.prepare.outputs.expected-sha }}
expected-cache-hit: ${{ steps.prepare.outputs.expected-cache-hit }}
steps:
- uses: yorifuji/easy-vrt@v1
id: lookup
with:
mode: lookup
- uses: yorifuji/easy-vrt/prepare@v2
id: prepare

expected:
if: ${{ !cancelled() && !failure() && needs.lookup.outputs.expected-cache-hit != 'true' }}
needs: lookup
if: ${{ !cancelled() && !failure() && needs.prepare.outputs.expected-cache-hit != 'true' }}
needs: prepare
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.lookup.outputs.expected-sha }}
ref: ${{ needs.prepare.outputs.expected-sha }}

# >>> add step to create expected image

# <<< add step to create expected image

- uses: yorifuji/easy-vrt@v1
- uses: yorifuji/easy-vrt/expected@v2
with:
mode: expected
expected-dir: your-expected-image-dir # set the directory where the expected image is stored
expected-cache-key: ${{ needs.lookup.outputs.expected-sha }}
expected-cache-key: ${{ needs.prepare.outputs.expected-sha }}

actual:
if: ${{ !cancelled() && !failure() && needs.lookup.outputs.actual-cache-hit != 'true' }}
needs: lookup
if: ${{ !cancelled() && !failure() && needs.prepare.outputs.actual-cache-hit != 'true' }}
needs: prepare
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.lookup.outputs.actual-sha }}
ref: ${{ needs.prepare.outputs.actual-sha }}

# >>> add step to create actual image

# <<< add step to create actual image

- uses: yorifuji/easy-vrt@v1
- uses: yorifuji/easy-vrt/actual@v2
with:
mode: actual
actual-dir: your-actual-image-dir # set the directory where the actual image is stored
actual-cache-key: ${{ needs.lookup.outputs.actual-sha }}
actual-cache-key: ${{ needs.prepare.outputs.actual-sha }}

compare:
if: ${{ !cancelled() && !failure() }}
needs: [lookup, expected, actual]
needs: [prepare, expected, actual]
runs-on: ubuntu-latest
steps:
- uses: yorifuji/easy-vrt@v1
- uses: yorifuji/easy-vrt/compare@v2
with:
mode: compare
expected-cache-key: ${{ needs.lookup.outputs.expected-sha }}
actual-cache-key: ${{ needs.lookup.outputs.actual-sha }}
expected-cache-key: ${{ needs.prepare.outputs.expected-sha }}
actual-cache-key: ${{ needs.prepare.outputs.actual-sha }}
```

### Example for Flutter Applications
Expand All @@ -95,12 +90,11 @@ expected
+ flutter pub get
+ flutter test --update-goldens --tags=golden

- uses: yorifuji/easy-vrt@v1
- uses: yorifuji/easy-vrt@v2
with:
mode: expected
- expected-dir: your-expected-image-dir # set the directory where the expected image is stored
+ expected-dir: test/golden_test/goldens
expected-cache-key: ${{ needs.lookup.outputs.expected-sha }}
expected-cache-key: ${{ needs.prepare.outputs.expected-sha }}
```

actual
Expand All @@ -114,35 +108,67 @@ actual
+ flutter pub get
+ flutter test --update-goldens --tags=golden

- uses: yorifuji/easy-vrt@v1
- uses: yorifuji/easy-vrt@v2
with:
mode: actual
- actual-dir: your-actual-image-dir # set the directory where the actual image is stored
+ actual-dir: test/golden_test/goldens
actual-cache-key: ${{ needs.lookup.outputs.actual-sha }}
actual-cache-key: ${{ needs.prepare.outputs.actual-sha }}
```

## Actions

### Inputs
### yorifuji/easy-vrt/prepare

```yaml
inputs:
mode:
description: "Mode, [lookup, expected, actual, compare]"
expected-dir:
description: "Expected directory"
required: true
expected-cache-key:
description: "Cache key for expected"
required: true
actual-dir:
description: "Actual directory"
required: true
actual-cache-key:
description: "Cache key for actual"
required: true
```

### yorifuji/easy-vrt/expected

```yaml
inputs:
expected-dir:
description: "Expected directory"
required: false
required: true
expected-cache-key:
description: "Cache key for expected"
required: false
required: true
```

### yorifuji/easy-vrt/actual

```yaml
inputs:
actual-dir:
description: "Actual directory"
required: false
required: true
actual-cache-key:
description: "Cache key for actual"
required: false
required: true
```

### yorifuji/easy-vrt/comapre

```yaml
inputs:
expected-cache-key:
description: "Cache key for expected"
required: true
actual-cache-key:
description: "Cache key for actual"
required: true
summary-comment:
description: "If true, add a summary comment on workflow summary"
required: false
Expand Down
7 changes: 7 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,32 @@ branding:
inputs:
mode:
description: "Mode, [lookup, expected, actual, compare]"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: true
expected-dir:
description: "Expected directory"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: false
expected-cache-key:
description: "Cache key for expected"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: false
actual-dir:
description: "Actual directory"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: false
actual-cache-key:
description: "Cache key for actual"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: false
summary-comment:
description: "If true, add a summary comment on workflow summary"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: false
default: false
review-comment:
description: "If true, add a review comment on PR review"
deprecationMessage: "Easy VRT version 1 is deprecated. Please use version 2."
required: false
default: false

Expand Down
30 changes: 30 additions & 0 deletions actual/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: "Actual VRT"

description: "Actual VRT is a utility action for visual regression testing."

author: "yorifuji"

branding:
icon: code
color: blue

inputs:
actual-dir:
description: "Actual directory"
required: true
actual-cache-key:
description: "Cache key for actual"
required: true

runs:
using: composite
steps:
- shell: bash
run: |
if [ -e .easy-vrt ]; then exit 1; fi
mkdir .easy-vrt && mv ${{ inputs.actual-dir }} .easy-vrt/actual

- uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: .easy-vrt/actual
key: reg-suit-cache-${{ inputs.actual-cache-key }}
Loading
Loading