Skip to content

Commit f66ffce

Browse files
committed
ci: add Playwright test job to master workflow
1 parent c64602c commit f66ffce

1 file changed

Lines changed: 115 additions & 1 deletion

File tree

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

Lines changed: 115 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,118 @@ jobs:
173173
- name: Build
174174
run: dotnet build eFormAPI/Plugins/ItemsPlanning.Pn/ItemsPlanning.Pn.sln
175175
- name: Unit Tests
176-
run: dotnet test --no-restore -c Release -v n eFormAPI/Plugins/ItemsPlanning.Pn/ItemsPlanning.Pn.Test/ItemsPlanning.Pn.Test.csproj
176+
run: dotnet test --no-restore -c Release -v n eFormAPI/Plugins/ItemsPlanning.Pn/ItemsPlanning.Pn.Test/ItemsPlanning.Pn.Test.csproj
177+
items-planning-playwright-test:
178+
needs: build
179+
runs-on: ubuntu-22.04
180+
strategy:
181+
fail-fast: false
182+
matrix:
183+
test: [a,b,c]
184+
steps:
185+
- uses: actions/checkout@v3
186+
with:
187+
path: main
188+
- uses: actions/download-artifact@v4
189+
with:
190+
name: items-planning-container
191+
- run: docker load -i items-planning-container.tar
192+
- name: Create docker network
193+
run: docker network create --driver bridge --attachable data
194+
- name: Start MariaDB
195+
run: |
196+
docker pull mariadb:10.8
197+
docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:10.8
198+
- name: Start rabbitmq
199+
run: |
200+
docker pull rabbitmq:latest
201+
docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest
202+
- name: Sleep 15
203+
run: sleep 15
204+
- name: Start the newly build Docker container
205+
id: docker-run
206+
run: docker run --name my-container -p 4200:5000 --network data microtingas/frontend-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 &
207+
- name: Use Node.ts
208+
uses: actions/setup-node@v3
209+
with:
210+
node-version: 22
211+
- name: Extract branch name
212+
id: extract_branch
213+
run: echo "BRANCH=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
214+
- name: 'Preparing Frontend checkout'
215+
uses: actions/checkout@v3
216+
with:
217+
repository: microting/eform-angular-frontend
218+
ref: ${{ steps.extract_branch.outputs.BRANCH }}
219+
path: eform-angular-frontend
220+
- name: Copy dependencies
221+
run: |
222+
cp -av main/eform-client/src/app/plugins/modules/items-planning-pn eform-angular-frontend/eform-client/src/app/plugins/modules/items-planning-pn
223+
mkdir -p eform-angular-frontend/eform-client/playwright/e2e/plugins/
224+
cp -av main/eform-client/playwright/e2e/plugins/items-planning-pn eform-angular-frontend/eform-client/playwright/e2e/plugins/items-planning-pn
225+
cp -av main/eform-client/playwright.config.ts eform-angular-frontend/eform-client/playwright.config.ts
226+
mkdir -p eform-angular-frontend/eform-client/cypress/e2e/plugins/
227+
cp -av main/eform-client/cypress/e2e/plugins/items-planning-pn eform-angular-frontend/eform-client/cypress/e2e/plugins/items-planning-pn
228+
cp -av main/eform-client/e2e/Assets eform-angular-frontend/eform-client/e2e/
229+
cd eform-angular-frontend/eform-client && ../../main/testinginstallpn.sh
230+
- name: yarn install
231+
run: cd eform-angular-frontend/eform-client && yarn install
232+
- name: Install Playwright browsers
233+
run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium
234+
- name: Pretest changes to work with Docker container
235+
run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts
236+
- name: DB Configuration
237+
uses: cypress-io/github-action@v4
238+
with:
239+
start: echo 'hi'
240+
wait-on: "http://localhost:4200"
241+
wait-on-timeout: 120
242+
browser: chrome
243+
record: false
244+
spec: cypress/e2e/db/*
245+
config-file: cypress.config.ts
246+
working-directory: eform-angular-frontend/eform-client
247+
command-prefix: "--"
248+
- name: Load DB dump
249+
if: matrix.test == 'a'
250+
run: |
251+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_Angular.EformPlugins set Status = 1'
252+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'drop database `420_SDK`'
253+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'create database `420_SDK`'
254+
docker exec -i mariadbtest mysql -u root --password=secretpassword 420_SDK < eform-angular-frontend/eform-client/cypress/e2e/plugins/items-planning-pn/a/420_sdk.sql
255+
- name: Change rabbitmq hostname
256+
if: ${{ matrix.test != 'a' }}
257+
run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"'
258+
- name: Enable plugins
259+
if: ${{ matrix.test != 'a' }}
260+
run: |
261+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_Angular.EformPlugins set Status = 2'
262+
docker restart my-container
263+
sleep 15
264+
- name: Get standard output
265+
run: |
266+
docker logs my-container
267+
docker ps -a
268+
- name: Wait for app
269+
run: npx wait-on http://localhost:4200 --timeout 120000
270+
- name: Run Playwright test
271+
run: |
272+
cd eform-angular-frontend/eform-client
273+
npx playwright test playwright/e2e/plugins/items-planning-pn/${{matrix.test}}/
274+
- name: Stop the newly build Docker container
275+
run: docker stop my-container
276+
- name: Get standard output
277+
run: |
278+
docker logs my-container
279+
docker ps -a
280+
- name: The job has failed
281+
if: ${{ failure() }}
282+
run: |
283+
cat docker_run_log
284+
- name: Archive Playwright report
285+
if: ${{ failure() }}
286+
uses: actions/upload-artifact@v4
287+
with:
288+
name: playwright-report-${{matrix.test}}
289+
path: eform-angular-frontend/eform-client/playwright-report/
290+
retention-days: 2

0 commit comments

Comments
 (0)