Skip to content

Commit b498245

Browse files
committed
feat: add Playwright test job to PR workflow
1 parent cff815d commit b498245

File tree

1 file changed

+110
-1
lines changed

1 file changed

+110
-1
lines changed

.github/workflows/dotnet-core-pr.yml

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,113 @@ jobs:
155155
- name: Build
156156
run: dotnet build eform-angular-workflow-plugin/eFormAPI/Plugins/Workflow.Pn/Workflow.Pn.sln
157157
- name: Unit Tests
158-
run: dotnet test --no-restore -c Release -v n eform-angular-workflow-plugin/eFormAPI/Plugins/Workflow.Pn/Workflow.Pn.Test/Workflow.Pn.Test.csproj
158+
run: dotnet test --no-restore -c Release -v n eform-angular-workflow-plugin/eFormAPI/Plugins/Workflow.Pn/Workflow.Pn.Test/Workflow.Pn.Test.csproj workflow-playwright-test:
159+
needs: workflow-build
160+
runs-on: ubuntu-22.04
161+
strategy:
162+
fail-fast: false
163+
matrix:
164+
test: [a,b,c,d]
165+
steps:
166+
- uses: actions/checkout@v3
167+
with:
168+
path: eform-angular-workflow-plugin
169+
- name: Create docker network
170+
run: docker network create --driver bridge data
171+
- name: Start MariaDB
172+
run: |
173+
docker pull mariadb:10.8
174+
docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:10.8
175+
- name: Start rabbitmq
176+
run: |
177+
docker pull rabbitmq:latest
178+
docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest
179+
- uses: actions/download-artifact@v4
180+
with:
181+
name: workflow-container
182+
- run: docker load -i workflow-container.tar
183+
- name: Use Node.js
184+
uses: actions/setup-node@v3
185+
with:
186+
node-version: 22
187+
- name: 'Preparing Frontend checkout'
188+
uses: actions/checkout@v3
189+
with:
190+
repository: microting/eform-angular-frontend
191+
ref: stable
192+
path: eform-angular-frontend
193+
- name: Sleep 15 seconds
194+
run: sleep 15
195+
- name: Load DB dump
196+
run: |
197+
mysql -u root -h 127.0.0.1 --password=secretpassword -e 'create database `420_eform-angular-workflow-plugin`'
198+
mysql -u root -h 127.0.0.1 --password=secretpassword 420_eform-angular-workflow-plugin < eform-angular-workflow-plugin/420_eform-angular-workflow-plugin.sql
199+
- name: Copy dependencies
200+
run: |
201+
cp -av eform-angular-workflow-plugin/eform-client/src/app/plugins/modules/workflow-pn eform-angular-frontend/eform-client/src/app/plugins/modules/workflow-pn
202+
mkdir -p eform-angular-frontend/eform-client/playwright/e2e/plugins/
203+
cp -av eform-angular-workflow-plugin/eform-client/playwright/e2e/plugins/workflow-pn eform-angular-frontend/eform-client/playwright/e2e/plugins/workflow-pn
204+
cp -av eform-angular-workflow-plugin/eform-client/playwright.config.ts eform-angular-frontend/eform-client/playwright.config.ts
205+
mkdir -p eform-angular-frontend/eFormAPI/eFormAPI.Web/Plugins
206+
cd eform-angular-frontend/eform-client && ../../eform-angular-workflow-plugin/testinginstallpn.sh
207+
- name: Start the newly build Docker container
208+
id: docker-run
209+
run: docker run --name my-container -p 4200:5000 --network data microtingas/workflow-container:latest "/ConnectionString=host=mariadbtest;Database=420_Angular;user=root;password=secretpassword;port=3306;Convert Zero Datetime = true;SslMode=none;" > docker_run_log 2>&1 &
210+
- name: Sleep 15 seconds
211+
run: sleep 15
212+
- name: Get standard output
213+
run: cat docker_run_log
214+
- name: Pretest changes to work with Docker container
215+
run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts
216+
- name: yarn install
217+
run: cd eform-angular-frontend/eform-client && yarn install
218+
- name: Install Playwright browsers
219+
run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium
220+
- name: DB Configuration
221+
uses: cypress-io/github-action@v4
222+
with:
223+
start: echo 'hi'
224+
wait-on: "http://localhost:4200"
225+
wait-on-timeout: 120
226+
browser: chrome
227+
record: false
228+
spec: cypress/e2e/db/*
229+
config-file: cypress.config.ts
230+
working-directory: eform-angular-frontend/eform-client
231+
command-prefix: "--"
232+
- name: Change rabbitmq hostname
233+
run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"'
234+
- name: Enable plugins
235+
if: matrix.test != 'a'
236+
run: |
237+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_Angular.EformPlugins set Status = 2'
238+
docker restart my-container
239+
sleep 15
240+
- name: Get standard output
241+
run: |
242+
cat docker_run_log
243+
result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l`
244+
if [ $result -ne 1 ];then exit 1; fi
245+
- name: Wait for app
246+
run: npx wait-on http://localhost:4200 --timeout 120000
247+
- name: ${{ matrix.test }} playwright test
248+
run: |
249+
cd eform-angular-frontend/eform-client
250+
npx playwright test playwright/e2e/plugins/workflow-pn/${{ matrix.test }}/
251+
- name: Stop the newly build Docker container
252+
run: docker stop my-container
253+
- name: Get standard output
254+
run: |
255+
cat docker_run_log
256+
result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l`
257+
if [ $result -ne 1 ];then exit 1; fi
258+
- name: Get standard output
259+
if: ${{ failure() }}
260+
run: cat docker_run_log
261+
- name: Archive Playwright report
262+
if: failure()
263+
uses: actions/upload-artifact@v4
264+
with:
265+
name: playwright-report-${{ matrix.test }}
266+
path: eform-angular-frontend/eform-client/playwright-report/
267+
retention-days: 2

0 commit comments

Comments
 (0)