mirror of
https://github.com/jwetzell/showbridge-webui.git
synced 2026-08-23 23:18:58 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 947fd14364 | |||
| 0a738b5c01 | |||
| 876f41f3c6 | |||
| 903653e4b3 | |||
| 785c1b882c | |||
| 4b1bd29487 | |||
| 70d5578713 | |||
| fca57b0302 | |||
| 69599e688c | |||
| 5e22cbfbdd | |||
| 26631d3bc2 | |||
| 0fc02a46d1 |
+15
-3
@@ -1,8 +1,20 @@
|
||||
import { test } from '@playwright/test';
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
test('add module', async ({ page }) => {
|
||||
await page.goto('/');
|
||||
await page.locator('app-module-list').getByText('add').click();
|
||||
await page.getByRole('button', { name: 'Add Module' }).click();
|
||||
await page.getByRole('menuitem', { name: 'HTTP Server' }).click();
|
||||
// TODO(jwetzell): test that the module gets added
|
||||
const module = page.locator('#modules\\.0');
|
||||
await expect(module).toBeVisible();
|
||||
await expect(module).toContainText('HTTP Server');
|
||||
});
|
||||
|
||||
test('remove module', async ({ page }) => {
|
||||
await page.goto('/');
|
||||
await page.getByRole('button', { name: 'Add Module' }).click();
|
||||
await page.getByRole('menuitem', { name: 'HTTP Server' }).click();
|
||||
const module = page.locator('#modules\\.0');
|
||||
await expect(module).toBeVisible();
|
||||
await module.getByRole('button', { name: 'Delete Module' }).click();
|
||||
await expect(module).not.toBeVisible();
|
||||
});
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
test('add route', async ({ page }) => {
|
||||
await page.goto('/');
|
||||
await page.getByRole('button', { name: 'Add Route' }).click();
|
||||
await page.getByRole('menuitem', { name: 'HTTP Server' }).click();
|
||||
const route = page.locator('#routes\\.0');
|
||||
await expect(route).toBeVisible();
|
||||
await expect(route).toContainText('Route 0');
|
||||
});
|
||||
|
||||
test('remove route', async ({ page }) => {
|
||||
await page.goto('/');
|
||||
await page.getByRole('button', { name: 'Add Route' }).click();
|
||||
const route = page.locator('#routes\\.0');
|
||||
await expect(route).toBeVisible();
|
||||
await route.getByRole('button', { name: 'Delete Route' }).click();
|
||||
await expect(route).not.toBeVisible();
|
||||
});
|
||||
Generated
+135
-135
@@ -1,22 +1,22 @@
|
||||
{
|
||||
"name": "@showbridge/webui",
|
||||
"version": "0.14.0",
|
||||
"version": "0.14.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@showbridge/webui",
|
||||
"version": "0.14.0",
|
||||
"version": "0.14.1",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@angular/cdk": "21.2.11",
|
||||
"@angular/common": "21.2.13",
|
||||
"@angular/compiler": "21.2.13",
|
||||
"@angular/core": "21.2.13",
|
||||
"@angular/forms": "21.2.13",
|
||||
"@angular/material": "21.2.11",
|
||||
"@angular/platform-browser": "21.2.13",
|
||||
"@angular/router": "21.2.13",
|
||||
"@angular/cdk": "21.2.13",
|
||||
"@angular/common": "21.2.15",
|
||||
"@angular/compiler": "21.2.15",
|
||||
"@angular/core": "21.2.15",
|
||||
"@angular/forms": "21.2.15",
|
||||
"@angular/material": "21.2.13",
|
||||
"@angular/platform-browser": "21.2.15",
|
||||
"@angular/router": "21.2.15",
|
||||
"ajv": "8.20.0",
|
||||
"js-yaml": "4.1.1",
|
||||
"lodash-es": "4.18.1",
|
||||
@@ -24,21 +24,21 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/build": "21.2.11",
|
||||
"@angular/cli": "21.2.11",
|
||||
"@angular/compiler-cli": "21.2.13",
|
||||
"@angular/material": "21.2.11",
|
||||
"@angular/build": "21.2.13",
|
||||
"@angular/cli": "21.2.13",
|
||||
"@angular/compiler-cli": "21.2.15",
|
||||
"@angular/material": "21.2.13",
|
||||
"@playwright/test": "1.60.0",
|
||||
"@tailwindcss/postcss": "4.3.0",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"jsdom": "29.1.1",
|
||||
"playwright-ng-schematics": "^21.1.0",
|
||||
"postcss": "8.5.14",
|
||||
"postcss": "8.5.15",
|
||||
"prettier": "3.8.3",
|
||||
"tailwindcss": "4.3.0",
|
||||
"typescript": "5.9.3",
|
||||
"vitest": "4.1.6"
|
||||
"vitest": "4.1.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/abtesting": {
|
||||
@@ -278,13 +278,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular-devkit/architect": {
|
||||
"version": "0.2102.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.11.tgz",
|
||||
"integrity": "sha512-t7J8aaUho1mXjiIecPNX5/rjXeV8j8ZCGY5tD3ic5kzKxPkbuYYcQpJLdzlmBcN+wDgCmNdo8ySvItvU0m58lg==",
|
||||
"version": "0.2102.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.13.tgz",
|
||||
"integrity": "sha512-fheyi0gPx6b7tT+WQ+ePlzdGqKjPLUK72wg5Z9pkVtQ5+VN/8yB9mlRlmoivngd2FeNG9wMeNynWZGYycnOWVw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@angular-devkit/core": "21.2.11",
|
||||
"@angular-devkit/core": "21.2.13",
|
||||
"rxjs": "7.8.2"
|
||||
},
|
||||
"bin": {
|
||||
@@ -297,9 +297,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular-devkit/core": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.11.tgz",
|
||||
"integrity": "sha512-kfMNh5X2hOdyr0uNFaaHUJR3OVr4oH2+UhI+FsTu7gqogdgYlHAVHhHAFulfDgtAEOiqpeSQF9RhQnCJl+/LXA==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.13.tgz",
|
||||
"integrity": "sha512-9jLaHcUr6BumIY9nCsBib1q62p259nf++gd2igYJ7mLm1w/0wEacsZ1cC8wCGEe6vx8a+DrD+EVCQ6zivePG2A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -342,13 +342,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular-devkit/schematics": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.11.tgz",
|
||||
"integrity": "sha512-69CWZ5/ftLdpUPAwwdAxTNosiGXUyvwdnOfmHsd9NvCT0OSTeq0eQ0UfnGcHASrXIVmnyWiNfBWM1DLqsgBXmw==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.13.tgz",
|
||||
"integrity": "sha512-gifpOcMNiAy49lQmQKhzpxoSfS3qJQSEdJSF5m7RVFkAcmllfcCD76GPN4dhho3wdAnbZ3qr54LtDqrGY4xNjw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@angular-devkit/core": "21.2.11",
|
||||
"@angular-devkit/core": "21.2.13",
|
||||
"jsonc-parser": "3.3.1",
|
||||
"magic-string": "0.30.21",
|
||||
"ora": "9.3.0",
|
||||
@@ -361,14 +361,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/build": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.11.tgz",
|
||||
"integrity": "sha512-2afR6VKkP0HH2u6OuijSMgSHsL5tU4CBCixgQtY677mlvS8TOZg/kOksJIUlz0EvDVCJZBK8WLH9cPJ6mC/Qdg==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.13.tgz",
|
||||
"integrity": "sha512-Y9TDAaTQ+E5LScCKA/hPZmns/7Mpu6J2BiPj2cETA1xNjvgRpeb5Mh32KuhZb20NSFLvjpdnLuBTTtbym7hevw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "2.3.0",
|
||||
"@angular-devkit/architect": "0.2102.11",
|
||||
"@angular-devkit/architect": "0.2102.13",
|
||||
"@babel/core": "7.29.0",
|
||||
"@babel/helper-annotate-as-pure": "7.27.3",
|
||||
"@babel/helper-split-export-declaration": "7.24.7",
|
||||
@@ -411,7 +411,7 @@
|
||||
"@angular/platform-browser": "^21.0.0",
|
||||
"@angular/platform-server": "^21.0.0",
|
||||
"@angular/service-worker": "^21.0.0",
|
||||
"@angular/ssr": "^21.2.11",
|
||||
"@angular/ssr": "^21.2.13",
|
||||
"karma": "^6.4.0",
|
||||
"less": "^4.2.0",
|
||||
"ng-packagr": "^21.0.0",
|
||||
@@ -461,9 +461,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/cdk": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.11.tgz",
|
||||
"integrity": "sha512-QS5f0si1LgDQFgxXtpuDr7gBFVSQLl1fdnx3UA6GrzSmuV0sfzBhBq7NlZGxZTDaKy4ZxY34RFx4Bvm1zo+gBA==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.13.tgz",
|
||||
"integrity": "sha512-nQGGJ6Efqi8n0qhT/PllsaIIY+vz+TL7/tpR7F2QKiqzS/9l4m7ea0vvS6fSMGrjEbqbkzTHbjLDsIg6X2hK+w==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -478,19 +478,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/cli": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.11.tgz",
|
||||
"integrity": "sha512-vpF/oa+HzLl4lF78ePCgkhBdQj29IlFvZtBsbAXXpb16FLZSua2m7+yHd/PICTlchh1+LfIxFY9snMY1BllBsQ==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.13.tgz",
|
||||
"integrity": "sha512-j1kOV/f0og/3xCwG7Y8RyPd6V7uYfX2NuvXbvN1mzgxLLN2mu6CTsvPg5l/9Pu9SJI3KOPRgDxWyuP3k8KuzMg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@angular-devkit/architect": "0.2102.11",
|
||||
"@angular-devkit/core": "21.2.11",
|
||||
"@angular-devkit/schematics": "21.2.11",
|
||||
"@angular-devkit/architect": "0.2102.13",
|
||||
"@angular-devkit/core": "21.2.13",
|
||||
"@angular-devkit/schematics": "21.2.13",
|
||||
"@inquirer/prompts": "7.10.1",
|
||||
"@listr2/prompt-adapter-inquirer": "3.0.5",
|
||||
"@modelcontextprotocol/sdk": "1.26.0",
|
||||
"@schematics/angular": "21.2.11",
|
||||
"@schematics/angular": "21.2.13",
|
||||
"@yarnpkg/lockfile": "1.1.0",
|
||||
"algoliasearch": "5.48.1",
|
||||
"ini": "6.0.0",
|
||||
@@ -513,9 +513,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/common": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.13.tgz",
|
||||
"integrity": "sha512-fNvRmGAX0zbsLX/kJjgb6l8HAuGTpfYRNc06taTCIvED2RsRpfwrh79IxYlPBspr+hpFbHa0/kxU6Q5I8V0jKQ==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.15.tgz",
|
||||
"integrity": "sha512-PHbICQe4YCXnax2FcmKUpiffs8XPW9A0KlZF35qgJoQyBMBZx5F8c8geCh25jxtq77n3eBTmOa/WIAdSqiitkQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -525,14 +525,14 @@
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": "21.2.13",
|
||||
"@angular/core": "21.2.15",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/compiler": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.13.tgz",
|
||||
"integrity": "sha512-0OZk5ujHgowRme3iXJ1Ce1OI3eTDcGovBARBiyJT0E8kt9Y0TdQdGaYMRrNN1UzDv4hk8f1d/xVeF0BpMTvqPQ==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.15.tgz",
|
||||
"integrity": "sha512-nwpNb+NbVUNzR3cck0QXbU/oFK7BpmXOXVnN/w7+P4+TsFUYeTtO1Ojbc15jkqe6mSM0lBvGlcoztVblHQkqcw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -543,9 +543,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/compiler-cli": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.13.tgz",
|
||||
"integrity": "sha512-ueETJy2ZcXZ4a0aLEr+oPMw26f8Hn903WC4QN0MCH+sLB9Zustpzydqtmzo5mdSzwuoLoxcesYJTZFmpwD1xIQ==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.15.tgz",
|
||||
"integrity": "sha512-/MU7OA9d/e9P5SthR+N6JJObBmzcGsgNQaeQ2YfSUnU0lCRVQweTWwxLFDbfU6UX8MZFWB6pdI57zod8r5kXUw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
@@ -567,7 +567,7 @@
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/compiler": "21.2.13",
|
||||
"@angular/compiler": "21.2.15",
|
||||
"typescript": ">=5.9 <6.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
@@ -577,9 +577,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/core": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.13.tgz",
|
||||
"integrity": "sha512-23tS4oNL8nvkHcI4l9rbruQs2WS4yqQmBVQxWakqS9cmRpArLGgveR+hKNU5tPXm5EAi8oLO34/Zy7z70jUpCg==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.15.tgz",
|
||||
"integrity": "sha512-J5JsUnNtQURdeA7EA3DoCsMBizW3l01gfqM326Al72Ou3woFWmRb5P3LOXpIOzAeMQhO6Z5tW+B1t+4qmoq7uw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -589,7 +589,7 @@
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/compiler": "21.2.13",
|
||||
"@angular/compiler": "21.2.15",
|
||||
"rxjs": "^6.5.3 || ^7.4.0",
|
||||
"zone.js": "~0.15.0 || ~0.16.0"
|
||||
},
|
||||
@@ -603,9 +603,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/forms": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.13.tgz",
|
||||
"integrity": "sha512-efAKdL8eVRlGvcJWrUFcYyRE/togWfopUTw2D5TIkDAndnmmRaWA70wD4n/E1FFV5UdxSBxoyEYE0qVlPiewtQ==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.15.tgz",
|
||||
"integrity": "sha512-swGUHgbBrPNvODPR9qBP6+vT2EHiyW361iEgS3HpTmvDhF/kD4l8NE0vh3P5N0DnEtGh4umOCKfQ1w6hPJ7lqA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -616,23 +616,23 @@
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "21.2.13",
|
||||
"@angular/core": "21.2.13",
|
||||
"@angular/platform-browser": "21.2.13",
|
||||
"@angular/common": "21.2.15",
|
||||
"@angular/core": "21.2.15",
|
||||
"@angular/platform-browser": "21.2.15",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/material": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@angular/material/-/material-21.2.11.tgz",
|
||||
"integrity": "sha512-XcLJ4nyrKpa1wHqJm53ohxmecVxwK0ppbesGyHIvcxZzgbzwZ8FyU00k6sy+6NWlGuikqmrEu3Gm5A8LRYOFXQ==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/material/-/material-21.2.13.tgz",
|
||||
"integrity": "sha512-6gWFb9LNh4cRIvkdocktej6MUVuGa9HQvap+j9gbZOtiveD7ER+FByUPlLlypreRebF29G2MRZeshKSdmv4NbA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/cdk": "21.2.11",
|
||||
"@angular/cdk": "21.2.13",
|
||||
"@angular/common": "^21.0.0 || ^22.0.0",
|
||||
"@angular/core": "^21.0.0 || ^22.0.0",
|
||||
"@angular/forms": "^21.0.0 || ^22.0.0",
|
||||
@@ -641,9 +641,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/platform-browser": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.13.tgz",
|
||||
"integrity": "sha512-96rcwLHsklqAYRuS2SEBOUdQS5PLkuUIEEIjpYu4rxU2PVvOMapJEImM/QBxrbwjnCgRbj/CivkgfjiR0R0wSA==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.15.tgz",
|
||||
"integrity": "sha512-O4ZHVV/rxkK1AuiD9M3UssL/HkoQvBcZy2+U421IMNibclGhwH9aRwc/0ZlQ7zpseS9+KPZ23FebvN4/92IbPg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -653,9 +653,9 @@
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "21.2.13",
|
||||
"@angular/common": "21.2.13",
|
||||
"@angular/core": "21.2.13"
|
||||
"@angular/animations": "21.2.15",
|
||||
"@angular/common": "21.2.15",
|
||||
"@angular/core": "21.2.15"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@angular/animations": {
|
||||
@@ -664,9 +664,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/router": {
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.13.tgz",
|
||||
"integrity": "sha512-/JXtdhUH/rDGiJmUNrrbs52Aji4sygVCz5HIBujrnj3cjreKam7n98Ufkh0aZvAKybdGd5A8srNUFePzAvfExQ==",
|
||||
"version": "21.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.15.tgz",
|
||||
"integrity": "sha512-Cej4hYkmaTB6wXn1xQPlr4O1wHgUD0WLv//Oue1IssKqL8vkzic5f5x/H/bxtxxGlSnc+i6uIUF/lvjdGoWk/A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
@@ -675,9 +675,9 @@
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "21.2.13",
|
||||
"@angular/core": "21.2.13",
|
||||
"@angular/platform-browser": "21.2.13",
|
||||
"@angular/common": "21.2.15",
|
||||
"@angular/core": "21.2.15",
|
||||
"@angular/platform-browser": "21.2.15",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
@@ -3844,14 +3844,14 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@schematics/angular": {
|
||||
"version": "21.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.11.tgz",
|
||||
"integrity": "sha512-EqH12Fr3vaWFpsilFDFXkxwMIidEDZr5cGl0w2hDRG7DjXE2oRB/VXix8xmpuHkzJ40Jgew6hIc+bfbwQhFK1A==",
|
||||
"version": "21.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.13.tgz",
|
||||
"integrity": "sha512-e5guslSLKbb3PJ6gUuVqM+V9xgn68cJkG1IyBohho34shbpOeoWW2eYdWQQjxvn0KUdgEhYSRBluBamCHngaUA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@angular-devkit/core": "21.2.11",
|
||||
"@angular-devkit/schematics": "21.2.11",
|
||||
"@angular-devkit/core": "21.2.13",
|
||||
"@angular-devkit/schematics": "21.2.13",
|
||||
"jsonc-parser": "3.3.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4360,16 +4360,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/expect": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz",
|
||||
"integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.7.tgz",
|
||||
"integrity": "sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@standard-schema/spec": "^1.1.0",
|
||||
"@types/chai": "^5.2.2",
|
||||
"@vitest/spy": "4.1.6",
|
||||
"@vitest/utils": "4.1.6",
|
||||
"@vitest/spy": "4.1.7",
|
||||
"@vitest/utils": "4.1.7",
|
||||
"chai": "^6.2.2",
|
||||
"tinyrainbow": "^3.1.0"
|
||||
},
|
||||
@@ -4378,13 +4378,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/mocker": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz",
|
||||
"integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.7.tgz",
|
||||
"integrity": "sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/spy": "4.1.6",
|
||||
"@vitest/spy": "4.1.7",
|
||||
"estree-walker": "^3.0.3",
|
||||
"magic-string": "^0.30.21"
|
||||
},
|
||||
@@ -4405,9 +4405,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/pretty-format": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz",
|
||||
"integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.7.tgz",
|
||||
"integrity": "sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4418,13 +4418,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/runner": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz",
|
||||
"integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.7.tgz",
|
||||
"integrity": "sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/utils": "4.1.6",
|
||||
"@vitest/utils": "4.1.7",
|
||||
"pathe": "^2.0.3"
|
||||
},
|
||||
"funding": {
|
||||
@@ -4432,14 +4432,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/snapshot": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz",
|
||||
"integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.7.tgz",
|
||||
"integrity": "sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/pretty-format": "4.1.6",
|
||||
"@vitest/utils": "4.1.6",
|
||||
"@vitest/pretty-format": "4.1.7",
|
||||
"@vitest/utils": "4.1.7",
|
||||
"magic-string": "^0.30.21",
|
||||
"pathe": "^2.0.3"
|
||||
},
|
||||
@@ -4448,9 +4448,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/spy": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz",
|
||||
"integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.7.tgz",
|
||||
"integrity": "sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
@@ -4458,13 +4458,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/utils": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz",
|
||||
"integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.7.tgz",
|
||||
"integrity": "sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/pretty-format": "4.1.6",
|
||||
"@vitest/pretty-format": "4.1.7",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"tinyrainbow": "^3.1.0"
|
||||
},
|
||||
@@ -7172,9 +7172,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.11",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
||||
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
||||
"version": "3.3.12",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
|
||||
"integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -7800,9 +7800,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.5.14",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz",
|
||||
"integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==",
|
||||
"version": "8.5.15",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz",
|
||||
"integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -7821,7 +7821,7 @@
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.11",
|
||||
"nanoid": "^3.3.12",
|
||||
"picocolors": "^1.1.1",
|
||||
"source-map-js": "^1.2.1"
|
||||
},
|
||||
@@ -9011,20 +9011,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vitest": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz",
|
||||
"integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==",
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.7.tgz",
|
||||
"integrity": "sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vitest/expect": "4.1.6",
|
||||
"@vitest/mocker": "4.1.6",
|
||||
"@vitest/pretty-format": "4.1.6",
|
||||
"@vitest/runner": "4.1.6",
|
||||
"@vitest/snapshot": "4.1.6",
|
||||
"@vitest/spy": "4.1.6",
|
||||
"@vitest/utils": "4.1.6",
|
||||
"@vitest/expect": "4.1.7",
|
||||
"@vitest/mocker": "4.1.7",
|
||||
"@vitest/pretty-format": "4.1.7",
|
||||
"@vitest/runner": "4.1.7",
|
||||
"@vitest/snapshot": "4.1.7",
|
||||
"@vitest/spy": "4.1.7",
|
||||
"@vitest/utils": "4.1.7",
|
||||
"es-module-lexer": "^2.0.0",
|
||||
"expect-type": "^1.3.0",
|
||||
"magic-string": "^0.30.21",
|
||||
@@ -9052,12 +9052,12 @@
|
||||
"@edge-runtime/vm": "*",
|
||||
"@opentelemetry/api": "^1.9.0",
|
||||
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
|
||||
"@vitest/browser-playwright": "4.1.6",
|
||||
"@vitest/browser-preview": "4.1.6",
|
||||
"@vitest/browser-webdriverio": "4.1.6",
|
||||
"@vitest/coverage-istanbul": "4.1.6",
|
||||
"@vitest/coverage-v8": "4.1.6",
|
||||
"@vitest/ui": "4.1.6",
|
||||
"@vitest/browser-playwright": "4.1.7",
|
||||
"@vitest/browser-preview": "4.1.7",
|
||||
"@vitest/browser-webdriverio": "4.1.7",
|
||||
"@vitest/coverage-istanbul": "4.1.7",
|
||||
"@vitest/coverage-v8": "4.1.7",
|
||||
"@vitest/ui": "4.1.7",
|
||||
"happy-dom": "*",
|
||||
"jsdom": "*",
|
||||
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
|
||||
+15
-15
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@showbridge/webui",
|
||||
"version": "0.14.0",
|
||||
"version": "0.14.1",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
@@ -28,14 +28,14 @@
|
||||
"license": "MIT",
|
||||
"packageManager": "npm@11.6.2",
|
||||
"dependencies": {
|
||||
"@angular/cdk": "21.2.11",
|
||||
"@angular/common": "21.2.13",
|
||||
"@angular/compiler": "21.2.13",
|
||||
"@angular/core": "21.2.13",
|
||||
"@angular/forms": "21.2.13",
|
||||
"@angular/material": "21.2.11",
|
||||
"@angular/platform-browser": "21.2.13",
|
||||
"@angular/router": "21.2.13",
|
||||
"@angular/cdk": "21.2.13",
|
||||
"@angular/common": "21.2.15",
|
||||
"@angular/compiler": "21.2.15",
|
||||
"@angular/core": "21.2.15",
|
||||
"@angular/forms": "21.2.15",
|
||||
"@angular/material": "21.2.13",
|
||||
"@angular/platform-browser": "21.2.15",
|
||||
"@angular/router": "21.2.15",
|
||||
"ajv": "8.20.0",
|
||||
"js-yaml": "4.1.1",
|
||||
"lodash-es": "4.18.1",
|
||||
@@ -43,20 +43,20 @@
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/build": "21.2.11",
|
||||
"@angular/cli": "21.2.11",
|
||||
"@angular/compiler-cli": "21.2.13",
|
||||
"@angular/material": "21.2.11",
|
||||
"@angular/build": "21.2.13",
|
||||
"@angular/cli": "21.2.13",
|
||||
"@angular/compiler-cli": "21.2.15",
|
||||
"@angular/material": "21.2.13",
|
||||
"@playwright/test": "1.60.0",
|
||||
"@tailwindcss/postcss": "4.3.0",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"jsdom": "29.1.1",
|
||||
"playwright-ng-schematics": "^21.1.0",
|
||||
"postcss": "8.5.14",
|
||||
"postcss": "8.5.15",
|
||||
"prettier": "3.8.3",
|
||||
"tailwindcss": "4.3.0",
|
||||
"typescript": "5.9.3",
|
||||
"vitest": "4.1.6"
|
||||
"vitest": "4.1.7"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,13 @@ export default defineConfig({
|
||||
webServer: [
|
||||
{
|
||||
name: 'showbridge',
|
||||
command: 'showbridge --config config.yaml',
|
||||
command: 'showbridge --config config.test.yaml',
|
||||
url: 'http://localhost:8080/health',
|
||||
timeout: 10000,
|
||||
gracefulShutdown: {
|
||||
signal: 'SIGTERM',
|
||||
timeout: 5000,
|
||||
},
|
||||
},
|
||||
],
|
||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||
@@ -36,6 +40,7 @@ export default defineConfig({
|
||||
|
||||
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
||||
trace: 'on-first-retry',
|
||||
video: 'retain-on-failure',
|
||||
},
|
||||
/* Configure projects for major browsers */
|
||||
projects: [
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
matTooltip="Add Module"
|
||||
class="flex items-center justify-center w-10 h-10 bg-transparent hover:bg-gray-700 hover:cursor-pointer text-blue-400"
|
||||
[matMenuTriggerFor]="addModuleMenu"
|
||||
role="button"
|
||||
aria-label="Add Module"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
</div>
|
||||
@@ -27,6 +29,7 @@
|
||||
@for (module of modules(); track module.id; let i = $index) {
|
||||
<div class="m-2" cdkDrag>
|
||||
<app-module
|
||||
[id]="listService.pathToId(`modules/${i}`)"
|
||||
[path]="`modules/${i}`"
|
||||
[module]="module"
|
||||
(updated)="moduleUpdated(i, $event)"
|
||||
|
||||
@@ -9,6 +9,7 @@ import { cloneDeep } from 'lodash-es';
|
||||
import { ModuleConfig } from '../../models/config';
|
||||
import { SchemaService } from '../../services/schema';
|
||||
import { ModuleComponent } from '../module/module';
|
||||
import { ListsService } from '../../services/lists';
|
||||
|
||||
@Component({
|
||||
selector: 'app-module-list',
|
||||
@@ -28,6 +29,7 @@ export class ModuleListComponent {
|
||||
modules = input<ModuleConfig[]>();
|
||||
updated = output<ModuleConfig[]>();
|
||||
public schemaService = inject(SchemaService);
|
||||
public listService = inject(ListsService);
|
||||
|
||||
private snackBar = inject(MatSnackBar);
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<div
|
||||
class="flex items-center justify-center hover:bg-gray-700 hover:cursor-pointer"
|
||||
(click)="delete.emit()"
|
||||
role="button"
|
||||
aria-label="Delete Module"
|
||||
>
|
||||
<mat-icon class="text-red-500!">close</mat-icon>
|
||||
</div>
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
matTooltip="Add Route"
|
||||
class="flex items-center justify-center w-10 h-10 bg-transparent hover:bg-gray-700 hover:cursor-pointer text-blue-400"
|
||||
(click)="addRoute()"
|
||||
role="button"
|
||||
aria-label="Add Route"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
</div>
|
||||
@@ -18,6 +20,7 @@
|
||||
@for (route of routes(); track route; let i = $index) {
|
||||
<div class="m-2" cdkDrag>
|
||||
<app-route
|
||||
[id]="listService.pathToId(`routes/${i}`)"
|
||||
[path]="`routes/${i}`"
|
||||
(updated)="routeUpdated(i, $event)"
|
||||
[route]="route"
|
||||
|
||||
@@ -16,6 +16,7 @@ import { cloneDeep } from 'lodash-es';
|
||||
import { RouteConfig } from '../../models/config';
|
||||
import { SchemaService } from '../../services/schema';
|
||||
import { RouteComponent } from '../route/route';
|
||||
import { ListsService } from '../../services/lists';
|
||||
|
||||
@Component({
|
||||
selector: 'app-route-list',
|
||||
@@ -37,6 +38,7 @@ export class RouteListComponent {
|
||||
moduleIds = input<string[]>();
|
||||
updated = output<RouteConfig[]>();
|
||||
public schemaService = inject(SchemaService);
|
||||
public listService = inject(ListsService);
|
||||
|
||||
private snackBar = inject(MatSnackBar);
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
<div
|
||||
class="flex items-center justify-center hover:bg-gray-700 hover:cursor-pointer"
|
||||
(click)="delete.emit()"
|
||||
role="button"
|
||||
aria-label="Delete Route"
|
||||
>
|
||||
<mat-icon class="text-red-500!">close</mat-icon>
|
||||
</div>
|
||||
|
||||
@@ -138,10 +138,9 @@ export class ConfigService {
|
||||
return;
|
||||
}
|
||||
|
||||
this.currentlyShownConfig.set({
|
||||
...currentConfig,
|
||||
modules: modules,
|
||||
});
|
||||
currentConfig.modules = cloneDeep(modules);
|
||||
|
||||
this.updateCurrentlyShownConfig(currentConfig);
|
||||
}
|
||||
|
||||
updateRoutes(routes: RouteConfig[]) {
|
||||
@@ -151,9 +150,8 @@ export class ConfigService {
|
||||
return;
|
||||
}
|
||||
|
||||
this.currentlyShownConfig.set({
|
||||
...currentConfig,
|
||||
routes: routes,
|
||||
});
|
||||
currentConfig.routes = cloneDeep(routes);
|
||||
|
||||
this.updateCurrentlyShownConfig(currentConfig);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user