Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 109 additions & 16 deletions .github/workflows/dotnet-core-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -128,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()
Expand Down Expand Up @@ -163,4 +157,103 @@ 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
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/playwright/e2e/Constants/DatabaseConfigurationConstants.ts
- name: Wait for app
run: npx wait-on http://localhost:4200 --timeout 120000
- name: DB Configuration
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
run: |
cat docker_run_log
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
- 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:.*: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
104 changes: 102 additions & 2 deletions .github/workflows/dotnet-core-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -157,4 +157,104 @@ 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
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/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
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
run: |
cat docker_run_log
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
- 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:.*: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
21 changes: 21 additions & 0 deletions eform-client/playwright.config.ts
Original file line number Diff line number Diff line change
@@ -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'] },
},
],
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
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';

const pluginName = 'Microting Greate Belt Plugin';

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.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.getPluginRowObjByName(pluginName);
expect(plugin).not.toBeNull();
await plugin!.enableOrDisablePlugin();

const pluginAfter = await pluginPage.getPluginRowObjByName(pluginName);
expect(pluginAfter).not.toBeNull();
expect(pluginAfter!.name.trim()).toBe(pluginName);
expect(pluginAfter!.status.trim()).toBe('toggle_on');
});
});
Loading