test: verify bundled decoders and artifact budgets (#7)
This commit is contained in:
@@ -1,16 +1,44 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
import { readFileSync } from 'node:fs';
|
||||
|
||||
test('viewer3d resolves hashed Draco and staged IFC decoders under a production subpath', async ({
|
||||
const basisFixture = readFileSync(
|
||||
new URL('../fixtures/viewer3d/BasisTexture.gltf', import.meta.url),
|
||||
);
|
||||
const basisTexture = readFileSync(
|
||||
new URL('../fixtures/viewer3d/BasisTexture.ktx2', import.meta.url),
|
||||
);
|
||||
|
||||
test('viewer3d resolves bundled model decoders under a production subpath', async ({
|
||||
page,
|
||||
}) => {
|
||||
const failedRequests: string[] = [];
|
||||
const responseUrls: string[] = [];
|
||||
page.on('requestfailed', (request) => failedRequests.push(request.url()));
|
||||
page.on('response', (response) => responseUrls.push(response.url()));
|
||||
await page.route(
|
||||
/^https?:\/\/[^/?]+\/viewer-3d\/e2e-fixtures\/BasisTexture\.gltf(?:\?.*)?$/,
|
||||
(route) =>
|
||||
route.fulfill({
|
||||
body: basisFixture,
|
||||
contentType: 'model/gltf+json',
|
||||
}),
|
||||
);
|
||||
await page.route(
|
||||
/^https?:\/\/[^/?]+\/viewer-3d\/e2e-fixtures\/BasisTexture\.ktx2(?:\?.*)?$/,
|
||||
(route) =>
|
||||
route.fulfill({
|
||||
body: basisTexture,
|
||||
contentType: 'image/ktx2',
|
||||
}),
|
||||
);
|
||||
|
||||
for (const fixture of ['Duck.optimized.glb', 'Cube.ifc']) {
|
||||
for (const fixture of [
|
||||
'samples/Duck.optimized.glb',
|
||||
'e2e-fixtures/BasisTexture.gltf',
|
||||
'samples/Cube.ifc',
|
||||
]) {
|
||||
await page.goto(
|
||||
`http://127.0.0.1:43174/viewer-3d/?model=/viewer-3d/samples/${fixture}`,
|
||||
`http://127.0.0.1:43174/viewer-3d/?model=/viewer-3d/${fixture}`,
|
||||
);
|
||||
await page.waitForFunction(
|
||||
() =>
|
||||
@@ -31,6 +59,11 @@ test('viewer3d resolves hashed Draco and staged IFC decoders under a production
|
||||
/\/viewer-3d\/assets\/draco_decoder-.+\.wasm$/.test(new URL(url).pathname),
|
||||
),
|
||||
).toBe(true);
|
||||
expect(
|
||||
responseUrls.some((url) =>
|
||||
/\/viewer-3d\/assets\/basis_transcoder-.+\.wasm$/.test(new URL(url).pathname),
|
||||
),
|
||||
).toBe(true);
|
||||
expect(responseUrls.some((url) => url.endsWith('/viewer-3d/web-ifc/web-ifc.wasm'))).toBe(true);
|
||||
expect(failedRequests).toEqual([]);
|
||||
});
|
||||
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"asset": {
|
||||
"version": "2.0",
|
||||
"generator": "hmwebviewer KTX2 E2E fixture"
|
||||
},
|
||||
"extensionsUsed": ["KHR_texture_basisu"],
|
||||
"extensionsRequired": ["KHR_texture_basisu"],
|
||||
"scene": 0,
|
||||
"scenes": [
|
||||
{
|
||||
"nodes": [0]
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"mesh": 0
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"POSITION": 0,
|
||||
"TEXCOORD_0": 1
|
||||
},
|
||||
"indices": 2,
|
||||
"material": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials": [
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 0
|
||||
},
|
||||
"metallicFactor": 0,
|
||||
"roughnessFactor": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"textures": [
|
||||
{
|
||||
"extensions": {
|
||||
"KHR_texture_basisu": {
|
||||
"source": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"uri": "BasisTexture.ktx2",
|
||||
"mimeType": "image/ktx2"
|
||||
}
|
||||
],
|
||||
"buffers": [
|
||||
{
|
||||
"uri": "data:application/octet-stream;base64,AACAvwAAgL8AAAAAAACAPwAAgL8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAD8AAIA/AAABAAIA",
|
||||
"byteLength": 66
|
||||
}
|
||||
],
|
||||
"bufferViews": [
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 0,
|
||||
"byteLength": 36,
|
||||
"target": 34962
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 36,
|
||||
"byteLength": 24,
|
||||
"target": 34962
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 60,
|
||||
"byteLength": 6,
|
||||
"target": 34963
|
||||
}
|
||||
],
|
||||
"accessors": [
|
||||
{
|
||||
"bufferView": 0,
|
||||
"componentType": 5126,
|
||||
"count": 3,
|
||||
"type": "VEC3",
|
||||
"min": [-1, -1, 0],
|
||||
"max": [1, 1, 0]
|
||||
},
|
||||
{
|
||||
"bufferView": 1,
|
||||
"componentType": 5126,
|
||||
"count": 3,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 2,
|
||||
"componentType": 5123,
|
||||
"count": 3,
|
||||
"type": "SCALAR"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
Reference in New Issue
Block a user