Skip to content

Commit 1df265e

Browse files
hahn-kevmyieye
andauthored
use argos for snapshot tests (#1716)
* use argos for snapshot tests * split frontend into it's own fw-lite job which runs in parallel to the dotnet tests * ensure that a row of data is scrolled into view on the default project page --------- Co-authored-by: Tim Haasdyk <tim_haasdyk@sil.org>
1 parent 6013045 commit 1df265e

20 files changed

Lines changed: 419 additions & 46 deletions

.github/workflows/fw-lite.yaml

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,6 @@ jobs:
4040
- uses: actions/setup-dotnet@v4
4141
with:
4242
dotnet-version: '9.x'
43-
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
44-
with:
45-
package_json_file: 'frontend/package.json'
46-
- uses: actions/setup-node@v4
47-
with:
48-
node-version-file: './frontend/package.json'
49-
cache: 'pnpm'
50-
cache-dependency-path: './frontend/pnpm-lock.yaml'
5143
- name: Install Task
5244
uses: arduino/setup-task@b91d5d2c96a56797b48ac1e0e89220bf64044611 #v2
5345
with:
@@ -62,22 +54,48 @@ jobs:
6254
echo "VERSION=v$(date --rfc-3339=date)-$shortSha" >> ${GITHUB_OUTPUT}
6355
echo "SEMVER_VERSION=$(date +%Y.%-m.%-d)" >> ${GITHUB_OUTPUT}
6456
57+
- name: Dotnet build
58+
# the android build is quite slow, so we disable it for builds just for testing
59+
run: dotnet build FwLiteOnly.slnf -p:BuildAndroid=false
60+
6561
- name: Check for pending EF model changes
66-
run: task fw-lite:has-pending-model-changes
62+
run: task fw-lite:has-pending-model-changes -- --no-build
63+
64+
- name: Dotnet test
65+
run: dotnet test FwLiteOnly.slnf --logger GitHubActions --no-build
6766

67+
frontend:
68+
runs-on: ubuntu-latest
69+
steps:
70+
- name: Checkout
71+
uses: actions/checkout@v4
72+
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
73+
with:
74+
package_json_file: 'frontend/package.json'
75+
- uses: actions/setup-node@v4
76+
with:
77+
node-version-file: './frontend/package.json'
78+
cache: 'pnpm'
79+
cache-dependency-path: './frontend/pnpm-lock.yaml'
80+
- name: Install Task
81+
uses: arduino/setup-task@b91d5d2c96a56797b48ac1e0e89220bf64044611 #v2
82+
with:
83+
repo-token: ${{ secrets.GITHUB_TOKEN }}
6884
- name: Prepare frontend
6985
working-directory: frontend
7086
run: |
7187
pnpm install
72-
pnpm svelte-kit sync
88+
- name: Set up Playwright dependencies
89+
working-directory: frontend
90+
run: pnpm exec playwright install --with-deps
91+
- name: Run snapshot tests
92+
working-directory: frontend/viewer
93+
run: task playwright-test-standalone
7394

7495
- name: Build viewer
7596
working-directory: frontend/viewer
7697
run: pnpm run build-app
7798

78-
- name: Dotnet test
79-
run: dotnet test FwLiteOnly.slnf --logger GitHubActions
80-
8199
- name: Upload viewer artifacts
82100
uses: actions/upload-artifact@v4
83101
with:
@@ -87,7 +105,7 @@ jobs:
87105

88106
publish-mac:
89107
name: Publish FW Lite app for Mac
90-
needs: build-and-test
108+
needs: [build-and-test, frontend]
91109
timeout-minutes: 30
92110
runs-on: macos-latest
93111
steps:
@@ -124,7 +142,7 @@ jobs:
124142

125143
publish-linux:
126144
name: Publish FW Lite app for Linux
127-
needs: build-and-test
145+
needs: [ build-and-test, frontend ]
128146
timeout-minutes: 30
129147
runs-on: ubuntu-latest
130148
steps:
@@ -155,7 +173,7 @@ jobs:
155173

156174
publish-android:
157175
name: Publish FW Lite app for Android
158-
needs: build-and-test
176+
needs: [ build-and-test, frontend ]
159177
timeout-minutes: 30
160178
runs-on: macos-latest
161179
steps:
@@ -188,7 +206,7 @@ jobs:
188206
KEYSTORE_PASS: ${{ secrets.FW_LITE_KEYSTORE_PASS }}
189207
KEYSTORE_ALIAS: ${{ vars.FW_LITE_KEYSTORE_UPLOAD_KEY_ALIAS }}
190208
run: |
191-
dotnet publish -f net9.0-android --artifacts-path ../artifacts \
209+
dotnet publish -f net9.0-android -p:BuildApple=false --artifacts-path ../artifacts \
192210
-p:ApplicationDisplayVersion=${{ needs.build-and-test.outputs.semver-version }} \
193211
-p:ApplicationVersion=${{ github.run_number }} \
194212
-p:InformationalVersion=${{ needs.build-and-test.outputs.version }} \
@@ -209,7 +227,7 @@ jobs:
209227

210228
publish-win:
211229
name: Publish FW Lite app for Windows
212-
needs: build-and-test
230+
needs: [ build-and-test, frontend ]
213231
timeout-minutes: 30
214232
runs-on: windows-latest
215233
steps:
@@ -231,14 +249,14 @@ jobs:
231249
- name: Publish Windows MAUI portable app
232250
working-directory: backend/FwLite/FwLiteMaui
233251
run: |
234-
dotnet publish -f net9.0-windows10.0.19041.0 --artifacts-path ../artifacts -p:WindowsPackageType=None -p:ApplicationDisplayVersion=${{ needs.build-and-test.outputs.semver-version }} -p:InformationalVersion=${{ needs.build-and-test.outputs.version }}
252+
dotnet publish -f net9.0-windows10.0.19041.0 -p:BuildAndroid=false --artifacts-path ../artifacts -p:WindowsPackageType=None -p:ApplicationDisplayVersion=${{ needs.build-and-test.outputs.semver-version }} -p:InformationalVersion=${{ needs.build-and-test.outputs.version }}
235253
mkdir -p ../artifacts/sign/portable
236254
cp -r ../artifacts/publish/FwLiteMaui/* ../artifacts/sign/portable/
237255
238256
- name: Publish Windows MAUI msix app
239257
working-directory: backend/FwLite/FwLiteMaui
240258
run: |
241-
dotnet publish -f net9.0-windows10.0.19041.0 --artifacts-path ../artifacts -p:ApplicationDisplayVersion=${{ needs.build-and-test.outputs.semver-version }} -p:InformationalVersion=${{ needs.build-and-test.outputs.version }}
259+
dotnet publish -f net9.0-windows10.0.19041.0 -p:BuildAndroid=false --artifacts-path ../artifacts -p:ApplicationDisplayVersion=${{ needs.build-and-test.outputs.semver-version }} -p:InformationalVersion=${{ needs.build-and-test.outputs.version }}
242260
mkdir -p ../artifacts/msix
243261
cp ../artifacts/bin/FwLiteMaui/*/AppPackages/*/*.msix ../artifacts/msix/
244262

backend/FwLite/FwLiteMaui/FwLiteMaui.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
<PropertyGroup>
33
<!-- override the target framework set in Directory.Build.props, we will use what is defined in TargetFrameworks below instead-->
44
<TargetFramework />
5-
<TargetFrameworks>net9.0-android;net9.0-ios;net9.0-maccatalyst</TargetFrameworks>
5+
<TargetFrameworks Condition=" '$(BuildAndroid)' != 'false' ">$(TargetFrameworks);net9.0-android;</TargetFrameworks>
6+
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('osx')) And '$(BuildApple)' != 'false'">$(TargetFrameworks);net9.0-ios;net9.0-maccatalyst</TargetFrameworks>
67
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net9.0-windows10.0.19041.0</TargetFrameworks>
78
<LangVersion>preview</LangVersion>
89
<!-- Note for MacCatalyst:

backend/FwLite/Taskfile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ tasks:
3838
deps: [ tool-restore ]
3939
dir: ./LcmCrdt
4040
cmds:
41-
- dotnet ef migrations has-pending-model-changes
41+
- dotnet ef migrations has-pending-model-changes {{.CLI_ARGS}}
4242

4343
maui-windows:
4444
label: Run Maui Windows, requires vite dev server to be running, use task fw-lite-win in root

0 commit comments

Comments
 (0)