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