From 3dc175ae4428e9619b68e7b847617093774e9b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Sat, 4 Apr 2026 06:54:38 +0200 Subject: [PATCH 1/7] feat: add Playwright config for e2e tests --- eform-client/playwright.config.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 eform-client/playwright.config.ts diff --git a/eform-client/playwright.config.ts b/eform-client/playwright.config.ts new file mode 100644 index 0000000..fa40c57 --- /dev/null +++ b/eform-client/playwright.config.ts @@ -0,0 +1,21 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + testDir: './playwright/e2e', + fullyParallel: false, + workers: 1, + timeout: 120_000, + use: { + baseURL: 'http://localhost:4200', + viewport: { width: 1920, height: 1080 }, + video: 'retain-on-failure', + screenshot: 'only-on-failure', + trace: 'retain-on-failure', + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], +}); From b28e4c7cc4f90e2503b80bf2c1c179c11f23ccbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Sat, 4 Apr 2026 06:54:43 +0200 Subject: [PATCH 2/7] feat: add Playwright test for greate-belt plugin settings --- .../a/greate-belt-settings.spec.ts | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts diff --git a/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts b/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts new file mode 100644 index 0000000..3760773 --- /dev/null +++ b/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts @@ -0,0 +1,44 @@ +import { test, expect } from '@playwright/test'; +import { LoginPage } from '../../../Page objects/Login.page'; +import { MyEformsPage } from '../../../Page objects/MyEforms.page'; +import { PluginPage } from '../../../Page objects/Plugin.page'; + +let page; + +test.describe('Application settings page - site header section', () => { + test.beforeAll(async ({ browser }) => { + page = await browser.newPage(); + }); + + test.afterAll(async () => { + await page.close(); + }); + + test('should go to plugin settings page', async () => { + const loginPage = new LoginPage(page); + const myEformsPage = new MyEformsPage(page); + const pluginPage = new PluginPage(page); + + await loginPage.open('/auth'); + await loginPage.login(); + await myEformsPage.Navbar.goToPluginsPage(); + + const plugin = await pluginPage.getFirstPluginRowObj(); + expect(plugin.id).toBe(1); + expect(plugin.name.trim()).toBe('Microting Greate Belt Plugin'); + expect(plugin.status.trim()).toBe('toggle_off'); + }); + + test('should activate the plugin', async () => { + test.setTimeout(240000); + const pluginPage = new PluginPage(page); + + const plugin = await pluginPage.getFirstPluginRowObj(); + await plugin.enableOrDisablePlugin(); + + const pluginAfter = await pluginPage.getFirstPluginRowObj(); + expect(pluginAfter.id).toBe(1); + expect(pluginAfter.name.trim()).toBe('Microting Greate Belt Plugin'); + expect(pluginAfter.status.trim()).toBe('toggle_on'); + }); +}); From 3f0f53b2b0c4a34d575733a10c3c1e290fb961ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Sat, 4 Apr 2026 06:55:52 +0200 Subject: [PATCH 3/7] ci: add Playwright test job to master workflow --- .github/workflows/dotnet-core-master.yml | 113 ++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-core-master.yml b/.github/workflows/dotnet-core-master.yml index 903422e..51eedd0 100644 --- a/.github/workflows/dotnet-core-master.yml +++ b/.github/workflows/dotnet-core-master.yml @@ -163,4 +163,115 @@ jobs: - name: Build run: dotnet build eform-angular-greate-belt-plugin/eFormAPI/Plugins/GreateBelt.Pn/GreateBelt.Pn.sln - name: Unit Tests - run: dotnet test --no-restore -c Release -v n eform-angular-greate-belt-plugin/eFormAPI/Plugins/GreateBelt.Pn/GreateBelt.Pn.Test/GreateBelt.Pn.Test.csproj \ No newline at end of file + run: dotnet test --no-restore -c Release -v n eform-angular-greate-belt-plugin/eFormAPI/Plugins/GreateBelt.Pn/GreateBelt.Pn.Test/GreateBelt.Pn.Test.csproj + greate-belt-playwright-test: + needs: greate-belt-pn-build + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + test: [a] + steps: + - uses: actions/checkout@v3 + with: + path: eform-angular-greate-belt-plugin + - name: Extract branch name + id: extract_branch + run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT + - name: Create docker network + run: docker network create --driver bridge --attachable data + - name: Start MariaDB + run: | + docker pull mariadb:10.8 + docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:10.8 + - name: Start rabbitmq + run: | + docker pull rabbitmq:latest + docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest + - uses: actions/download-artifact@v4 + with: + name: greate-belt-container + - run: docker load -i greate-belt-container.tar + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: 22 + - name: 'Preparing Frontend checkout' + uses: actions/checkout@v3 + with: + repository: microting/eform-angular-frontend + ref: ${{ steps.extract_branch.outputs.branch }} + path: eform-angular-frontend + - name: 'Preparing ItemsPlanning checkout' + uses: actions/checkout@v3 + with: + repository: microting/eform-angular-items-planning-plugin + ref: ${{ steps.extract_branch.outputs.branch }} + path: eform-angular-items-planning-plugin + - name: Sleep 15 seconds + run: sleep 15 + - name: Copy dependencies + run: | + cp -av eform-angular-items-planning-plugin/eform-client/src/app/plugins/modules/items-planning-pn eform-angular-frontend/eform-client/src/app/plugins/modules/items-planning-pn + cp -av eform-angular-greate-belt-plugin/eform-client/src/app/plugins/modules/greate-belt-pn eform-angular-frontend/eform-client/src/app/plugins/modules/greate-belt-pn + mkdir -p eform-angular-frontend/eform-client/playwright/e2e/plugins/ + cp -av eform-angular-greate-belt-plugin/eform-client/playwright/e2e/plugins/greate-belt-pn eform-angular-frontend/eform-client/playwright/e2e/plugins/greate-belt-pn + cp -av eform-angular-greate-belt-plugin/eform-client/playwright.config.ts eform-angular-frontend/eform-client/playwright.config.ts + mkdir -p eform-angular-frontend/eFormAPI/eFormAPI.Web/Plugins + cd eform-angular-frontend/eform-client && ../../eform-angular-items-planning-plugin/testinginstallpn.sh + ../../eform-angular-greate-belt-plugin/testinginstallpn.sh + - name: Start the newly build Docker container + id: docker-run + run: docker run --name my-container -p 4200:5000 --network data microtingas/greate-belt-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 & + - name: Sleep 15 seconds + run: sleep 15 + - name: Get standard output + run: cat docker_run_log + - name: Pretest changes to work with Docker container + run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts + - name: yarn install + run: cd eform-angular-frontend/eform-client && yarn install + - name: Install Playwright browsers + run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium + - name: DB Configuration + uses: cypress-io/github-action@v4 + with: + start: echo 'hi' + wait-on: "http://localhost:4200" + wait-on-timeout: 120 + browser: chrome + record: false + spec: cypress/e2e/db/* + config-file: cypress.config.ts + working-directory: eform-angular-frontend/eform-client + command-prefix: "--" + - name: Change rabbitmq hostname + run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"' + - name: Get standard output + run: | + cat docker_run_log + result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + if [ $result -ne 1 ];then exit 1; fi + - name: Wait for app + run: npx wait-on http://localhost:4200 --timeout 120000 + - name: ${{ matrix.test }} playwright test + run: | + cd eform-angular-frontend/eform-client + npx playwright test playwright/e2e/plugins/greate-belt-pn/${{ matrix.test }}/ + - name: Stop the newly build Docker container + run: docker stop my-container + - name: Get standard output + run: | + cat docker_run_log + result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + if [ $result -ne 1 ];then exit 1; fi + - name: Get standard output + if: ${{ failure() }} + run: cat docker_run_log + - name: Archive Playwright report + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-report-${{ matrix.test }} + path: eform-angular-frontend/eform-client/playwright-report/ + retention-days: 2 \ No newline at end of file From 9cecaee5a20edecda0dcfc5a71fa82a04834be3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Sat, 4 Apr 2026 06:56:39 +0200 Subject: [PATCH 4/7] ci: add Playwright test job to PR workflow --- .github/workflows/dotnet-core-pr.yml | 110 ++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-core-pr.yml b/.github/workflows/dotnet-core-pr.yml index 7e896c2..d013a5e 100644 --- a/.github/workflows/dotnet-core-pr.yml +++ b/.github/workflows/dotnet-core-pr.yml @@ -157,4 +157,112 @@ jobs: - name: Build run: dotnet build eform-angular-greate-belt-plugin/eFormAPI/Plugins/GreateBelt.Pn/GreateBelt.Pn.sln - name: Unit Tests - run: dotnet test --no-restore -c Release -v n eform-angular-greate-belt-plugin/eFormAPI/Plugins/GreateBelt.Pn/GreateBelt.Pn.Test/GreateBelt.Pn.Test.csproj \ No newline at end of file + run: dotnet test --no-restore -c Release -v n eform-angular-greate-belt-plugin/eFormAPI/Plugins/GreateBelt.Pn/GreateBelt.Pn.Test/GreateBelt.Pn.Test.csproj + greate-belt-playwright-test: + needs: greate-belt-pn-build + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + test: [a] + steps: + - uses: actions/checkout@v3 + with: + path: eform-angular-greate-belt-plugin + - name: Create docker network + run: docker network create --driver bridge --attachable data + - name: Start MariaDB + run: | + docker pull mariadb:10.8 + docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:10.8 + - name: Start rabbitmq + run: | + docker pull rabbitmq:latest + docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest + - uses: actions/download-artifact@v4 + with: + name: greate-belt-container + - run: docker load -i greate-belt-container.tar + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: 22 + - name: 'Preparing Frontend checkout' + uses: actions/checkout@v3 + with: + repository: microting/eform-angular-frontend + ref: stable + path: eform-angular-frontend + - name: 'Preparing ItemsPlanning checkout' + uses: actions/checkout@v3 + with: + repository: microting/eform-angular-items-planning-plugin + ref: stable + path: eform-angular-items-planning-plugin + - name: Sleep 15 seconds + run: sleep 15 + - name: Copy dependencies + run: | + cp -av eform-angular-items-planning-plugin/eform-client/src/app/plugins/modules/items-planning-pn eform-angular-frontend/eform-client/src/app/plugins/modules/items-planning-pn + cp -av eform-angular-greate-belt-plugin/eform-client/src/app/plugins/modules/greate-belt-pn eform-angular-frontend/eform-client/src/app/plugins/modules/greate-belt-pn + mkdir -p eform-angular-frontend/eform-client/playwright/e2e/plugins/ + cp -av eform-angular-greate-belt-plugin/eform-client/playwright/e2e/plugins/greate-belt-pn eform-angular-frontend/eform-client/playwright/e2e/plugins/greate-belt-pn + cp -av eform-angular-greate-belt-plugin/eform-client/playwright.config.ts eform-angular-frontend/eform-client/playwright.config.ts + mkdir -p eform-angular-frontend/eFormAPI/eFormAPI.Web/Plugins + cd eform-angular-frontend/eform-client && ../../eform-angular-items-planning-plugin/testinginstallpn.sh + ../../eform-angular-greate-belt-plugin/testinginstallpn.sh + - name: Start the newly build Docker container + id: docker-run + run: docker run --name my-container -p 4200:5000 --network data microtingas/greate-belt-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 & + - name: Sleep 15 seconds + run: sleep 15 + - name: Get standard output + run: cat docker_run_log + - name: Pretest changes to work with Docker container + run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts + - name: yarn install + run: cd eform-angular-frontend/eform-client && yarn install + - name: Install Playwright browsers + run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium + - name: DB Configuration + uses: cypress-io/github-action@v4 + with: + start: echo 'hi' + wait-on: "http://localhost:4200" + wait-on-timeout: 120 + browser: chrome + record: false + spec: cypress/e2e/db/* + config-file: cypress.config.ts + working-directory: eform-angular-frontend/eform-client + command-prefix: "--" + - name: Change rabbitmq hostname + run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"' + - name: Get standard output + run: | + cat docker_run_log + result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + if [ $result -ne 1 ];then exit 1; fi + - name: Wait for app + run: npx wait-on http://localhost:4200 --timeout 120000 + - name: ${{ matrix.test }} playwright test + run: | + cd eform-angular-frontend/eform-client + npx playwright test playwright/e2e/plugins/greate-belt-pn/${{ matrix.test }}/ + - name: Stop the newly build Docker container + run: docker stop my-container + - name: Get standard output + run: | + cat docker_run_log + result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + if [ $result -ne 1 ];then exit 1; fi + - name: Get standard output + if: ${{ failure() }} + run: cat docker_run_log + - name: Archive Playwright report + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-report-${{ matrix.test }} + path: eform-angular-frontend/eform-client/playwright-report/ + retention-days: 2 \ No newline at end of file From 1504a6eba39c898241ccb53047087b57e64f39ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Sun, 5 Apr 2026 08:41:58 +0200 Subject: [PATCH 5/7] fix(playwright): find plugin by name instead of assuming first row The Docker image includes Items Planning as a dependency, so it registers as plugin id=1. Use getPluginRowObjByName to find Greate Belt Plugin regardless of its position in the plugin list. Co-Authored-By: Claude Opus 4.6 --- .../a/greate-belt-settings.spec.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts b/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts index 3760773..625da35 100644 --- a/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts +++ b/eform-client/playwright/e2e/plugins/greate-belt-pn/a/greate-belt-settings.spec.ts @@ -3,6 +3,8 @@ import { LoginPage } from '../../../Page objects/Login.page'; import { MyEformsPage } from '../../../Page objects/MyEforms.page'; import { PluginPage } from '../../../Page objects/Plugin.page'; +const pluginName = 'Microting Greate Belt Plugin'; + let page; test.describe('Application settings page - site header section', () => { @@ -23,22 +25,23 @@ test.describe('Application settings page - site header section', () => { await loginPage.login(); await myEformsPage.Navbar.goToPluginsPage(); - const plugin = await pluginPage.getFirstPluginRowObj(); - expect(plugin.id).toBe(1); - expect(plugin.name.trim()).toBe('Microting Greate Belt Plugin'); - expect(plugin.status.trim()).toBe('toggle_off'); + const plugin = await pluginPage.getPluginRowObjByName(pluginName); + expect(plugin).not.toBeNull(); + expect(plugin!.name.trim()).toBe(pluginName); + expect(plugin!.status.trim()).toBe('toggle_off'); }); test('should activate the plugin', async () => { test.setTimeout(240000); const pluginPage = new PluginPage(page); - const plugin = await pluginPage.getFirstPluginRowObj(); - await plugin.enableOrDisablePlugin(); + const plugin = await pluginPage.getPluginRowObjByName(pluginName); + expect(plugin).not.toBeNull(); + await plugin!.enableOrDisablePlugin(); - const pluginAfter = await pluginPage.getFirstPluginRowObj(); - expect(pluginAfter.id).toBe(1); - expect(pluginAfter.name.trim()).toBe('Microting Greate Belt Plugin'); - expect(pluginAfter.status.trim()).toBe('toggle_on'); + const pluginAfter = await pluginPage.getPluginRowObjByName(pluginName); + expect(pluginAfter).not.toBeNull(); + expect(pluginAfter!.name.trim()).toBe(pluginName); + expect(pluginAfter!.status.trim()).toBe('toggle_on'); }); }); From eeb15f8c14333533926cfaca4d9074bac8cf5e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Sun, 5 Apr 2026 08:45:16 +0200 Subject: [PATCH 6/7] ci: replace Cypress DB configuration with Playwright in both workflows Co-Authored-By: Claude Opus 4.6 --- .github/workflows/dotnet-core-master.yml | 42 +++++++----------------- .github/workflows/dotnet-core-pr.yml | 16 +++------ 2 files changed, 16 insertions(+), 42 deletions(-) diff --git a/.github/workflows/dotnet-core-master.yml b/.github/workflows/dotnet-core-master.yml index 51eedd0..aa6fc4b 100644 --- a/.github/workflows/dotnet-core-master.yml +++ b/.github/workflows/dotnet-core-master.yml @@ -104,21 +104,15 @@ jobs: - name: Create errorShots directory run: mkdir eform-angular-frontend/eform-client/errorShots - name: Pretest changes to work with Docker container - run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts - - name: Get standard output - run: | - cat docker_run_log + run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/playwright/e2e/Constants/DatabaseConfigurationConstants.ts + - name: yarn install + run: cd eform-angular-frontend/eform-client && yarn install + - name: Install Playwright browsers + run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium + - name: Wait for app + run: npx wait-on http://localhost:4200 --timeout 120000 - name: DB Configuration - uses: cypress-io/github-action@v3 - with: - start: echo 'hi' - wait-on: "http://localhost:4200" - wait-on-timeout: 120 - browser: chrome - record: false - spec: cypress/e2e/db/* - config-file: cypress.config.ts - working-directory: eform-angular-frontend/eform-client + run: cd eform-angular-frontend/eform-client && npx playwright test playwright/e2e/Tests/database-configuration/ - name: Change rabbitmq hostname run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"' #- name: Plugin testing @@ -228,23 +222,11 @@ jobs: - name: Get standard output run: cat docker_run_log - name: Pretest changes to work with Docker container - run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts - - name: yarn install - run: cd eform-angular-frontend/eform-client && yarn install - - name: Install Playwright browsers - run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium + run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/playwright/e2e/Constants/DatabaseConfigurationConstants.ts + - name: Wait for app + run: npx wait-on http://localhost:4200 --timeout 120000 - name: DB Configuration - uses: cypress-io/github-action@v4 - with: - start: echo 'hi' - wait-on: "http://localhost:4200" - wait-on-timeout: 120 - browser: chrome - record: false - spec: cypress/e2e/db/* - config-file: cypress.config.ts - working-directory: eform-angular-frontend/eform-client - command-prefix: "--" + run: cd eform-angular-frontend/eform-client && npx playwright test playwright/e2e/Tests/database-configuration/ - name: Change rabbitmq hostname run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"' - name: Get standard output diff --git a/.github/workflows/dotnet-core-pr.yml b/.github/workflows/dotnet-core-pr.yml index d013a5e..8d51902 100644 --- a/.github/workflows/dotnet-core-pr.yml +++ b/.github/workflows/dotnet-core-pr.yml @@ -219,23 +219,15 @@ jobs: - name: Get standard output run: cat docker_run_log - name: Pretest changes to work with Docker container - run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts + run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/playwright/e2e/Constants/DatabaseConfigurationConstants.ts - name: yarn install run: cd eform-angular-frontend/eform-client && yarn install - name: Install Playwright browsers run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium + - name: Wait for app + run: npx wait-on http://localhost:4200 --timeout 120000 - name: DB Configuration - uses: cypress-io/github-action@v4 - with: - start: echo 'hi' - wait-on: "http://localhost:4200" - wait-on-timeout: 120 - browser: chrome - record: false - spec: cypress/e2e/db/* - config-file: cypress.config.ts - working-directory: eform-angular-frontend/eform-client - command-prefix: "--" + run: cd eform-angular-frontend/eform-client && npx playwright test playwright/e2e/Tests/database-configuration/ - name: Change rabbitmq hostname run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"' - name: Get standard output From 5995b1c0121649e1dbb8eabbca5e7c0769ce4587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schultz=20Madsen?= Date: Mon, 6 Apr 2026 07:47:20 +0200 Subject: [PATCH 7/7] fix(ci): update startup log grep for HTTP/2 compatibility Kestrel now uses Http1AndHttp2 protocol mode, which may change the listening URL format. Use wildcard grep pattern to match regardless of protocol scheme, consistent with eform-angular-frontend CI. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/dotnet-core-master.yml | 6 +++--- .github/workflows/dotnet-core-pr.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dotnet-core-master.yml b/.github/workflows/dotnet-core-master.yml index aa6fc4b..f41a65c 100644 --- a/.github/workflows/dotnet-core-master.yml +++ b/.github/workflows/dotnet-core-master.yml @@ -122,7 +122,7 @@ jobs: - name: Get standard output run: | cat docker_run_log - result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + result=`cat docker_run_log | grep "Now listening on:.*:5000" -m 1 | wc -l` if [ $result -ne 1 ];then exit 1; fi - name: The job has failed if: always() @@ -232,7 +232,7 @@ jobs: - name: Get standard output run: | cat docker_run_log - result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + result=`cat docker_run_log | grep "Now listening on:.*:5000" -m 1 | wc -l` if [ $result -ne 1 ];then exit 1; fi - name: Wait for app run: npx wait-on http://localhost:4200 --timeout 120000 @@ -245,7 +245,7 @@ jobs: - name: Get standard output run: | cat docker_run_log - result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + result=`cat docker_run_log | grep "Now listening on:.*:5000" -m 1 | wc -l` if [ $result -ne 1 ];then exit 1; fi - name: Get standard output if: ${{ failure() }} diff --git a/.github/workflows/dotnet-core-pr.yml b/.github/workflows/dotnet-core-pr.yml index 8d51902..e793432 100644 --- a/.github/workflows/dotnet-core-pr.yml +++ b/.github/workflows/dotnet-core-pr.yml @@ -122,7 +122,7 @@ jobs: - name: Get standard output run: | cat docker_run_log - result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + result=`cat docker_run_log | grep "Now listening on:.*:5000" -m 1 | wc -l` if [ $result -ne 1 ];then exit 1; fi - name: The job has failed if: always() @@ -233,7 +233,7 @@ jobs: - name: Get standard output run: | cat docker_run_log - result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + result=`cat docker_run_log | grep "Now listening on:.*:5000" -m 1 | wc -l` if [ $result -ne 1 ];then exit 1; fi - name: Wait for app run: npx wait-on http://localhost:4200 --timeout 120000 @@ -246,7 +246,7 @@ jobs: - name: Get standard output run: | cat docker_run_log - result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l` + result=`cat docker_run_log | grep "Now listening on:.*:5000" -m 1 | wc -l` if [ $result -ne 1 ];then exit 1; fi - name: Get standard output if: ${{ failure() }}