@jskit-ai/shell-web 0.1.128 → 0.1.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.descriptor.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default Object.freeze({
|
|
2
2
|
packageVersion: 1,
|
|
3
3
|
packageId: "@jskit-ai/shell-web",
|
|
4
|
-
version: "0.1.
|
|
4
|
+
version: "0.1.129",
|
|
5
5
|
kind: "runtime",
|
|
6
6
|
description: "Web shell layout runtime with outlet-based placement contributions.",
|
|
7
7
|
dependsOn: [],
|
|
@@ -311,7 +311,7 @@ export default Object.freeze({
|
|
|
311
311
|
dependencies: {
|
|
312
312
|
runtime: {
|
|
313
313
|
"@mdi/js": "^7.4.47",
|
|
314
|
-
"@jskit-ai/kernel": "0.1.
|
|
314
|
+
"@jskit-ai/kernel": "0.1.128"
|
|
315
315
|
},
|
|
316
316
|
dev: {
|
|
317
317
|
"@playwright/test": "1.61.1"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/shell-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.129",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@mdi/js": "^7.4.47",
|
|
31
|
-
"@jskit-ai/kernel": "0.1.
|
|
31
|
+
"@jskit-ai/kernel": "0.1.128"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"pinia": "^3.0.4",
|
|
@@ -68,6 +68,48 @@ async function isElementVisibleInViewport(page, testId) {
|
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
async function runAdaptiveShellSmokeCase({
|
|
72
|
+
page,
|
|
73
|
+
expect,
|
|
74
|
+
smokePath = DEFAULT_SMOKE_PATH,
|
|
75
|
+
viewport
|
|
76
|
+
} = {}) {
|
|
77
|
+
if (!page || !expect || !viewport) {
|
|
78
|
+
throw new Error("runAdaptiveShellSmokeCase requires page, expect, and viewport.");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
await page.setViewportSize({ width: viewport.width, height: viewport.height });
|
|
82
|
+
await page.goto(smokePath);
|
|
83
|
+
await expect(page.locator("body")).toBeVisible();
|
|
84
|
+
await expectGeneratedScreenContract(page, expect);
|
|
85
|
+
await expectNoHorizontalOverflow(page, expect);
|
|
86
|
+
|
|
87
|
+
if (viewport.name === "compact") {
|
|
88
|
+
let bootstrapRequests = 0;
|
|
89
|
+
await page.route("**/api/bootstrap**", async (route) => {
|
|
90
|
+
bootstrapRequests += 1;
|
|
91
|
+
await route.continue();
|
|
92
|
+
});
|
|
93
|
+
const bootstrapRequestsBeforePull = bootstrapRequests;
|
|
94
|
+
|
|
95
|
+
await expect(page.getByTestId("jskit-shell-bottom-nav")).toBeVisible();
|
|
96
|
+
expect(await isElementVisibleInViewport(page, "jskit-shell-drawer")).toBe(false);
|
|
97
|
+
|
|
98
|
+
const navButtonHeights = await page.getByTestId("jskit-shell-bottom-nav").locator(".v-btn").evaluateAll((buttons) =>
|
|
99
|
+
buttons.map((button) => button.getBoundingClientRect().height)
|
|
100
|
+
);
|
|
101
|
+
expect(navButtonHeights.length).toBeGreaterThan(0);
|
|
102
|
+
for (const height of navButtonHeights) {
|
|
103
|
+
expect(height).toBeGreaterThanOrEqual(48);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
await pullToRefresh(page, expect);
|
|
107
|
+
await expect.poll(() => bootstrapRequests).toBeGreaterThan(bootstrapRequestsBeforePull);
|
|
108
|
+
} else {
|
|
109
|
+
await expect(page.getByTestId("jskit-shell-drawer")).toBeVisible();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
71
113
|
function runAdaptiveShellSmoke({
|
|
72
114
|
test,
|
|
73
115
|
expect,
|
|
@@ -81,39 +123,10 @@ function runAdaptiveShellSmoke({
|
|
|
81
123
|
test.describe("generated adaptive shell smoke", () => {
|
|
82
124
|
for (const viewport of viewports) {
|
|
83
125
|
test(`${viewport.name} layout has reachable navigation and no horizontal overflow`, async ({ page }) => {
|
|
84
|
-
await
|
|
85
|
-
await page.goto(smokePath);
|
|
86
|
-
await expect(page.locator("body")).toBeVisible();
|
|
87
|
-
await expectGeneratedScreenContract(page, expect);
|
|
88
|
-
await expectNoHorizontalOverflow(page, expect);
|
|
89
|
-
|
|
90
|
-
if (viewport.name === "compact") {
|
|
91
|
-
let bootstrapRequests = 0;
|
|
92
|
-
await page.route("**/api/bootstrap**", async (route) => {
|
|
93
|
-
bootstrapRequests += 1;
|
|
94
|
-
await route.continue();
|
|
95
|
-
});
|
|
96
|
-
const bootstrapRequestsBeforePull = bootstrapRequests;
|
|
97
|
-
|
|
98
|
-
await expect(page.getByTestId("jskit-shell-bottom-nav")).toBeVisible();
|
|
99
|
-
expect(await isElementVisibleInViewport(page, "jskit-shell-drawer")).toBe(false);
|
|
100
|
-
|
|
101
|
-
const navButtonHeights = await page.getByTestId("jskit-shell-bottom-nav").locator(".v-btn").evaluateAll((buttons) =>
|
|
102
|
-
buttons.map((button) => button.getBoundingClientRect().height)
|
|
103
|
-
);
|
|
104
|
-
expect(navButtonHeights.length).toBeGreaterThan(0);
|
|
105
|
-
for (const height of navButtonHeights) {
|
|
106
|
-
expect(height).toBeGreaterThanOrEqual(48);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
await pullToRefresh(page, expect);
|
|
110
|
-
await expect.poll(() => bootstrapRequests).toBeGreaterThan(bootstrapRequestsBeforePull);
|
|
111
|
-
} else {
|
|
112
|
-
await expect(page.getByTestId("jskit-shell-drawer")).toBeVisible();
|
|
113
|
-
}
|
|
126
|
+
await runAdaptiveShellSmokeCase({ page, expect, smokePath, viewport });
|
|
114
127
|
});
|
|
115
128
|
}
|
|
116
129
|
});
|
|
117
130
|
}
|
|
118
131
|
|
|
119
|
-
export { DEFAULT_VIEWPORTS, runAdaptiveShellSmoke };
|
|
132
|
+
export { DEFAULT_VIEWPORTS, runAdaptiveShellSmoke, runAdaptiveShellSmokeCase };
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { expect, test } from "@playwright/test";
|
|
2
|
-
import {
|
|
2
|
+
import { DEFAULT_VIEWPORTS, runAdaptiveShellSmokeCase } from "@jskit-ai/shell-web/test/adaptiveShellSmoke";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
test.describe("generated adaptive shell smoke", () => {
|
|
5
|
+
for (const viewport of DEFAULT_VIEWPORTS) {
|
|
6
|
+
test(`${viewport.name} layout has reachable navigation and no horizontal overflow`, async ({ page }) => {
|
|
7
|
+
await runAdaptiveShellSmokeCase({ page, expect, viewport });
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
});
|
|
@@ -140,7 +140,10 @@ test("shell-web installs generated adaptive shell Playwright smoke coverage", as
|
|
|
140
140
|
profile: "responsive-smoke",
|
|
141
141
|
sourceName: "adaptiveShellSmoke.js"
|
|
142
142
|
});
|
|
143
|
-
assert.match(source, /
|
|
143
|
+
assert.match(source, /DEFAULT_VIEWPORTS, runAdaptiveShellSmokeCase/);
|
|
144
|
+
assert.match(source, /test\(`/);
|
|
145
|
+
assert.match(source, /runAdaptiveShellSmokeCase\(\{ page, expect, viewport \}\)/);
|
|
146
|
+
assert.doesNotMatch(source, /runAdaptiveShellSmoke\(\{/);
|
|
144
147
|
assert.match(source, /@jskit-ai\/shell-web\/test\/adaptiveShellSmoke/);
|
|
145
148
|
assert.match(helperSource, /generated adaptive shell smoke/);
|
|
146
149
|
assert.match(helperSource, /390/);
|