Compare commits
1 Commits
master
...
Development
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f8e0c42ec |
@@ -0,0 +1,27 @@
|
|||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: lts/*
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: npx playwright install --with-deps
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: npx playwright test
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
with:
|
||||||
|
name: playwright-report
|
||||||
|
path: playwright-report/
|
||||||
|
retention-days: 30
|
||||||
+9
-1
@@ -38,4 +38,12 @@ DEDUPLICATION_*.md
|
|||||||
docker-compose.local.yaml
|
docker-compose.local.yaml
|
||||||
docker-compose.override.yaml
|
docker-compose.override.yaml
|
||||||
.env.local
|
.env.local
|
||||||
.env.docker
|
.env.docker
|
||||||
|
|
||||||
|
# Playwright
|
||||||
|
node_modules/
|
||||||
|
/test-results/
|
||||||
|
/playwright-report/
|
||||||
|
/blob-report/
|
||||||
|
/playwright/.cache/
|
||||||
|
/playwright/.auth/
|
||||||
|
|||||||
@@ -45,6 +45,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"dev": [
|
||||||
|
"Composer\\Config::disableProcessTimeout",
|
||||||
|
"npx concurrently -c \"#93c5fd,#c4b5fd,#fdba74\" \"php artisan serve --no-reload --port=8090\" \"php artisan queue:listen --tries=1\" \"npm run dev\" --names='server,queue,vite'"
|
||||||
|
],
|
||||||
"post-autoload-dump": [
|
"post-autoload-dump": [
|
||||||
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
||||||
"@php artisan package:discover --ansi"
|
"@php artisan package:discover --ansi"
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// @ts-check
|
||||||
|
import { test, expect } from '@playwright/test';
|
||||||
|
|
||||||
|
test('has title', async ({ page }) => {
|
||||||
|
await page.goto('https://playwright.dev/');
|
||||||
|
|
||||||
|
// Expect a title "to contain" a substring.
|
||||||
|
await expect(page).toHaveTitle(/Playwright/);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('get started link', async ({ page }) => {
|
||||||
|
await page.goto('https://playwright.dev/');
|
||||||
|
|
||||||
|
// Click the get started link.
|
||||||
|
await page.getByRole('link', { name: 'Get started' }).click();
|
||||||
|
|
||||||
|
// Expects page to have a heading with the name of Installation.
|
||||||
|
await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
|
||||||
|
});
|
||||||
Generated
+6102
-6056
File diff suppressed because it is too large
Load Diff
+67
-66
@@ -1,68 +1,69 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"typecheck": "vue-tsc --noEmit -p tsconfig.json"
|
"typecheck": "vue-tsc --noEmit -p tsconfig.json"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@inertiajs/vue3": "2.0",
|
"@inertiajs/vue3": "2.0",
|
||||||
"@mdi/js": "^7.4.47",
|
"@mdi/js": "^7.4.47",
|
||||||
"@tailwindcss/forms": "^0.5.10",
|
"@playwright/test": "^1.59.1",
|
||||||
"@tailwindcss/postcss": "^4.1.18",
|
"@tailwindcss/forms": "^0.5.10",
|
||||||
"@tailwindcss/typography": "^0.5.19",
|
"@tailwindcss/postcss": "^4.1.18",
|
||||||
"@types/node": "^24.10.3",
|
"@tailwindcss/typography": "^0.5.19",
|
||||||
"@vitejs/plugin-vue": "^6.0.2",
|
"@types/node": "^24.10.3",
|
||||||
"autoprefixer": "^10.4.22",
|
"@vitejs/plugin-vue": "^6.0.2",
|
||||||
"axios": "^1.13.2",
|
"autoprefixer": "^10.4.22",
|
||||||
"laravel-vite-plugin": "^2.0.1",
|
"axios": "^1.13.2",
|
||||||
"postcss": "^8.5.6",
|
"laravel-vite-plugin": "^2.0.1",
|
||||||
"tailwindcss": "^4.1.16",
|
"postcss": "^8.5.6",
|
||||||
"typescript": "^5.9.3",
|
"tailwindcss": "^4.1.16",
|
||||||
"vite": "^7.2.7",
|
"typescript": "^5.9.3",
|
||||||
"vue": "^3.3.13",
|
"vite": "^7.2.7",
|
||||||
"vue-tsc": "^3.1.8"
|
"vue": "^3.3.13",
|
||||||
},
|
"vue-tsc": "^3.1.8"
|
||||||
"dependencies": {
|
},
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
"dependencies": {
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.7.2",
|
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
||||||
"@fortawesome/free-solid-svg-icons": "^6.7.2",
|
"@fortawesome/free-regular-svg-icons": "^6.7.2",
|
||||||
"@fortawesome/vue-fontawesome": "^3.1.2",
|
"@fortawesome/free-solid-svg-icons": "^6.7.2",
|
||||||
"@guolao/vue-monaco-editor": "^1.6.0",
|
"@fortawesome/vue-fontawesome": "^3.1.2",
|
||||||
"@headlessui/vue": "^1.7.23",
|
"@guolao/vue-monaco-editor": "^1.6.0",
|
||||||
"@heroicons/vue": "^2.2.0",
|
"@headlessui/vue": "^1.7.23",
|
||||||
"@internationalized/date": "^3.10.0",
|
"@heroicons/vue": "^2.2.0",
|
||||||
"@tanstack/vue-table": "^8.21.3",
|
"@internationalized/date": "^3.10.0",
|
||||||
"@unovis/ts": "^1.6.2",
|
"@tanstack/vue-table": "^8.21.3",
|
||||||
"@unovis/vue": "^1.6.2",
|
"@unovis/ts": "^1.6.2",
|
||||||
"@vee-validate/zod": "^4.15.1",
|
"@unovis/vue": "^1.6.2",
|
||||||
"@vuepic/vue-datepicker": "^11.0.3",
|
"@vee-validate/zod": "^4.15.1",
|
||||||
"@vueuse/core": "^14.1.0",
|
"@vuepic/vue-datepicker": "^11.0.3",
|
||||||
"apexcharts": "^4.7.0",
|
"@vueuse/core": "^14.1.0",
|
||||||
"class-variance-authority": "^0.7.1",
|
"apexcharts": "^4.7.0",
|
||||||
"clean": "^4.0.2",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clean": "^4.0.2",
|
||||||
"date-fns": "^4.1.0",
|
"clsx": "^2.1.1",
|
||||||
"lodash": "^4.17.21",
|
"date-fns": "^4.1.0",
|
||||||
"lucide-vue-next": "^0.552.0",
|
"lodash": "^4.17.21",
|
||||||
"material-design-icons-iconfont": "^6.7.0",
|
"lucide-vue-next": "^0.552.0",
|
||||||
"monaco-editor": "^0.55.1",
|
"material-design-icons-iconfont": "^6.7.0",
|
||||||
"preline": "^2.7.0",
|
"monaco-editor": "^0.55.1",
|
||||||
"quill": "^1.3.7",
|
"preline": "^2.7.0",
|
||||||
"reka-ui": "^2.7.0",
|
"quill": "^1.3.7",
|
||||||
"tailwind-merge": "^3.4.0",
|
"reka-ui": "^2.7.0",
|
||||||
"tailwindcss-animate": "^1.0.7",
|
"tailwind-merge": "^3.4.0",
|
||||||
"tailwindcss-inner-border": "^0.2.0",
|
"tailwindcss-animate": "^1.0.7",
|
||||||
"v-calendar": "^3.1.2",
|
"tailwindcss-inner-border": "^0.2.0",
|
||||||
"vee-validate": "^4.15.1",
|
"v-calendar": "^3.1.2",
|
||||||
"vue-currency-input": "^3.2.1",
|
"vee-validate": "^4.15.1",
|
||||||
"vue-multiselect": "^3.4.0",
|
"vue-currency-input": "^3.2.1",
|
||||||
"vue-search-input": "^1.1.19",
|
"vue-multiselect": "^3.4.0",
|
||||||
"vue-sonner": "^2.0.9",
|
"vue-search-input": "^1.1.19",
|
||||||
"vue3-apexcharts": "^1.10.0",
|
"vue-sonner": "^2.0.9",
|
||||||
"vuedraggable": "^4.1.0",
|
"vue3-apexcharts": "^1.10.0",
|
||||||
"zod": "^3.25.76"
|
"vuedraggable": "^4.1.0",
|
||||||
}
|
"zod": "^3.25.76"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
// @ts-check
|
||||||
|
import { defineConfig, devices } from '@playwright/test';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read environment variables from file.
|
||||||
|
* https://github.com/motdotla/dotenv
|
||||||
|
*/
|
||||||
|
// import dotenv from 'dotenv';
|
||||||
|
// import path from 'path';
|
||||||
|
// dotenv.config({ path: path.resolve(__dirname, '.env') });
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see https://playwright.dev/docs/test-configuration
|
||||||
|
*/
|
||||||
|
export default defineConfig({
|
||||||
|
testDir: './e2e',
|
||||||
|
/* Run tests in files in parallel */
|
||||||
|
fullyParallel: true,
|
||||||
|
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
||||||
|
forbidOnly: !!process.env.CI,
|
||||||
|
/* Retry on CI only */
|
||||||
|
retries: process.env.CI ? 2 : 0,
|
||||||
|
/* Opt out of parallel tests on CI. */
|
||||||
|
workers: process.env.CI ? 1 : undefined,
|
||||||
|
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
||||||
|
reporter: 'html',
|
||||||
|
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||||
|
use: {
|
||||||
|
/* Base URL to use in actions like `await page.goto('')`. */
|
||||||
|
// baseURL: 'http://localhost:3000',
|
||||||
|
|
||||||
|
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
||||||
|
trace: 'on-first-retry',
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Configure projects for major browsers */
|
||||||
|
projects: [
|
||||||
|
{
|
||||||
|
name: 'chromium',
|
||||||
|
use: { ...devices['Desktop Chrome'] },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'firefox',
|
||||||
|
use: { ...devices['Desktop Firefox'] },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'webkit',
|
||||||
|
use: { ...devices['Desktop Safari'] },
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Test against mobile viewports. */
|
||||||
|
// {
|
||||||
|
// name: 'Mobile Chrome',
|
||||||
|
// use: { ...devices['Pixel 5'] },
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: 'Mobile Safari',
|
||||||
|
// use: { ...devices['iPhone 12'] },
|
||||||
|
// },
|
||||||
|
|
||||||
|
/* Test against branded browsers. */
|
||||||
|
// {
|
||||||
|
// name: 'Microsoft Edge',
|
||||||
|
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: 'Google Chrome',
|
||||||
|
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
|
||||||
|
// },
|
||||||
|
],
|
||||||
|
|
||||||
|
/* Run your local dev server before starting the tests */
|
||||||
|
// webServer: {
|
||||||
|
// command: 'npm run start',
|
||||||
|
// url: 'http://localhost:3000',
|
||||||
|
// reuseExistingServer: !process.env.CI,
|
||||||
|
// },
|
||||||
|
});
|
||||||
|
|
||||||
@@ -54,7 +54,9 @@ const form = useInertiaForm({
|
|||||||
props.actions[0].decisions.length > 0
|
props.actions[0].decisions.length > 0
|
||||||
? props.actions[0].decisions[0].id
|
? props.actions[0].decisions[0].id
|
||||||
: null,
|
: null,
|
||||||
contract_uuids: props.contractUuid ? [props.contractUuid] : [],
|
contract_uuids: props.contractUuid ? [props.contractUuid] : (props.contracts && Array.isArray(props.contracts)
|
||||||
|
? props.contracts.map((c) => c.uuid)
|
||||||
|
: []),
|
||||||
send_auto_mail: true,
|
send_auto_mail: true,
|
||||||
attach_documents: false,
|
attach_documents: false,
|
||||||
attachment_document_ids: [],
|
attachment_document_ids: [],
|
||||||
@@ -104,7 +106,9 @@ watch(
|
|||||||
() => props.show,
|
() => props.show,
|
||||||
(visible) => {
|
(visible) => {
|
||||||
if (visible) {
|
if (visible) {
|
||||||
form.contract_uuids = props.contractUuid ? [props.contractUuid] : [];
|
form.contract_uuids = props.contractUuid ? [props.contractUuid] : (props.contracts && Array.isArray(props.contracts)
|
||||||
|
? props.contracts.map((c) => c.uuid)
|
||||||
|
: []);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user