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
5 changes: 5 additions & 0 deletions .changeset/rich-candles-think.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@lynx-js/web-core": patch
---

fix: add sandbox attribute to iframe for enhanced security
5 changes: 5 additions & 0 deletions .changeset/rude-owls-cheer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@lynx-js/web-core": patch
---

fix: the default template loader won't fetch twice for one url
Original file line number Diff line number Diff line change
Expand Up @@ -40,24 +40,27 @@ const {
*/
function createIFrameRealm(parent: Node): JSRealm {
const iframe = document.createElement('iframe');
const iframeLoaded = new Promise<void>((resolve) => {
iframe.onload = () => resolve();
});
iframe.style.display = 'none';
iframe.src = 'about:blank';
iframe.srcdoc =
'<!DOCTYPE html><html><head></head><body style="display:none"></body></html>';
iframe.sandbox = 'allow-same-origin allow-scripts'; // Restrict capabilities for security
iframe.loading = 'eager';
parent.appendChild(iframe);
const iframeWindow = iframe.contentWindow! as unknown as typeof globalThis;
const iframeDocument = iframe.contentDocument!;
const loadScript: (url: string) => Promise<unknown> = (url) => {
const loadScript: (url: string) => Promise<unknown> = async (url) => {
const script = iframe.contentDocument!.createElement('script');
script.fetchPriority = 'high';
script.defer = true;
script.async = false;
if (!iframe.contentDocument!.head) {
await new Promise<void>((resolve) => {
iframe.onload = () => resolve();
// In case iframe is already loaded, wait a macro task
setTimeout(() => resolve(), 0);
});
}
iframe.contentDocument!.head.appendChild(script);
return new Promise(async (resolve, reject) => {
if (iframeDocument.readyState !== 'complete') {
await iframeLoaded;
}
const script = iframeDocument.createElement('script');
script.src = url;
script.fetchPriority = 'high';
script.defer = true;
script.async = false;
script.onload = () => {
const ret = iframeWindow?.module?.exports;
// @ts-expect-error
Expand All @@ -68,7 +71,7 @@ function createIFrameRealm(parent: Node): JSRealm {
reject(new Error(`Failed to load script: ${url}`, { cause: err }));
// @ts-expect-error
iframeWindow.module = { exports: undefined };
iframe.contentDocument!.head.appendChild(script);
script.src = url;
});
};
const loadScriptSync: (url: string) => unknown = (url) => {
Expand Down
46 changes: 28 additions & 18 deletions packages/web-platform/web-core/src/utils/loadTemplate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import {
type TemplateLoader,
} from '@lynx-js/web-constants';

const templateCache: Record<string, LynxTemplate> = {};
const templateCache: Map<string, Promise<LynxTemplate> | LynxTemplate> =
new Map();

function createJsModuleUrl(content: string): string {
return URL.createObjectURL(new Blob([content], { type: 'text/javascript' }));
Expand All @@ -19,27 +20,36 @@ export function createTemplateLoader(
url: string,
) => {
markTimingInternal('load_template_start');
const cachedTemplate = templateCache[url];
const cachedTemplate = templateCache.get(url);
if (cachedTemplate) {
markTimingInternal('load_template_end');
return cachedTemplate;
} else {
const promise = new Promise<LynxTemplate>(async (resolve, reject) => {
try {
const template = customTemplateLoader
? await customTemplateLoader(url)
: (await (await fetch(url, {
method: 'GET',
})).json()) as LynxTemplate;
const decodedTemplate = await generateTemplate(
template,
createJsModuleUrl,
);
resolve(decodedTemplate);
} catch (e) {
templateCache.delete(url);
reject(e);
}
});
templateCache.set(url, promise);
/**
* This will cause a memory leak, which is expected.
* We cannot ensure that the `URL.createObjectURL` created url will never be used, therefore here we keep it for the entire lifetime of this page.
*/
markTimingInternal('load_template_end');
return promise;
}
Comment thread
PupilTong marked this conversation as resolved.
const template = customTemplateLoader
? await customTemplateLoader(url)
: (await (await fetch(url, {
method: 'GET',
})).json()) as LynxTemplate;
const decodedTemplate = await generateTemplate(
template,
createJsModuleUrl,
);
templateCache[url] = decodedTemplate;
/**
* This will cause a memory leak, which is expected.
* We cannot ensure that the `URL.createObjectURL` created url will never be used, therefore here we keep it for the entire lifetime of this page.
*/
markTimingInternal('load_template_end');
return decodedTemplate;
};
return loadTemplate;
}
2 changes: 1 addition & 1 deletion packages/web-platform/web-tests/rspack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const config = {
meta: {
viewport:
'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no',
'apple-mobile-web-app-capable': 'yes',
'mobile-web-app-capable': 'yes',
'apple-mobile-web-app-status-bar-style': 'default',
'screen-orientation': 'portrait',
'format-detection': 'telephone=no',
Expand Down
9 changes: 6 additions & 3 deletions packages/web-platform/web-tests/tests/react.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
ReturnType<typeof expect<Page>>['toHaveScreenshot']
>[0],
) => {
await expect(page).toHaveScreenshot([

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:2129:7 › reactlynx3 tests › elements › text › basic-element-text-word-break

10) [webkit] › tests/react.spec.ts:2129:7 › reactlynx3 tests › elements › text › basic-element-text-word-break Error: expect(page).toHaveScreenshot(expected) failed 2762 pixels (ratio 0.02 of all image pixels) are different. Snapshot: text/word-break/index.png Call log: - Expect "toHaveScreenshot(text/word-break/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 2762 pixels (ratio 0.02 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 2762 pixels (ratio 0.02 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:2131:15

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:2035:7 › reactlynx3 tests › elements › text › basic-element-text-maxline-with-setData

7) [webkit] › tests/react.spec.ts:2035:7 › reactlynx3 tests › elements › text › basic-element-text-maxline-with-setData Error: expect(page).toHaveScreenshot(expected) failed 74 pixels (ratio 0.01 of all image pixels) are different. Snapshot: text/maxline-with-setData/index/index.png Call log: - Expect "toHaveScreenshot(text/maxline-with-setData/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 74 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 74 pixels (ratio 0.01 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:2040:17

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:2017:7 › reactlynx3 tests › elements › text › basic-element-text-linear-gradient-color

6) [webkit] › tests/react.spec.ts:2017:7 › reactlynx3 tests › elements › text › basic-element-text-linear-gradient-color Error: expect(page).toHaveScreenshot(expected) failed 2152 pixels (ratio 0.01 of all image pixels) are different. Snapshot: text/linear-gradient-color/index.png Call log: - Expect "toHaveScreenshot(text/linear-gradient-color/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 2152 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 2152 pixels (ratio 0.01 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:2022:17

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:2001:7 › reactlynx3 tests › elements › text › basic-element-text-dynamic-text-style-update

5) [webkit] › tests/react.spec.ts:2001:7 › reactlynx3 tests › elements › text › basic-element-text-dynamic-text-style-update Error: expect(page).toHaveScreenshot(expected) failed 910 pixels (ratio 0.01 of all image pixels) are different. Snapshot: text/basic-element-text-dynamic-text-style-update/initial.png Call log: - Expect "toHaveScreenshot(text/basic-element-text-dynamic-text-style-update/initial.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 910 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 910 pixels (ratio 0.01 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:2006:17

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:1986:7 › reactlynx3 tests › elements › text › basic-element-text-tail-color-convert

4) [webkit] › tests/react.spec.ts:1986:7 › reactlynx3 tests › elements › text › basic-element-text-tail-color-convert Error: expect(page).toHaveScreenshot(expected) failed 488 pixels (ratio 0.01 of all image pixels) are different. Snapshot: text/tail-color-convert/index.png Call log: - Expect "toHaveScreenshot(text/tail-color-convert/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 488 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 488 pixels (ratio 0.01 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:1991:17

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:1977:7 › reactlynx3 tests › elements › text › basic-element-text-maxlength

3) [webkit] › tests/react.spec.ts:1977:7 › reactlynx3 tests › elements › text › basic-element-text-maxlength Error: expect(page).toHaveScreenshot(expected) failed 5819 pixels (ratio 0.03 of all image pixels) are different. Snapshot: text/maxlength/index.png Call log: - Expect "toHaveScreenshot(text/maxlength/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 5819 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 5819 pixels (ratio 0.03 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:1982:17

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (4/4) / check

[firefox] › tests/react.spec.ts:4529:5 › reactlynx3 tests › linear layout › basic-linear-row-container-items-layout-gravity

4) [firefox] › tests/react.spec.ts:4529:5 › reactlynx3 tests › linear layout › basic-linear-row-container-items-layout-gravity Error: expect(page).toHaveScreenshot(expected) failed 24000 pixels (ratio 0.03 of all image pixels) are different. Snapshot: basic-linear-row-container-items-layout-gravity/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-row-container-items-layout-gravity/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 24000 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 24000 pixels (ratio 0.03 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4533:13

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (4/4) / check

[firefox] › tests/react.spec.ts:4514:5 › reactlynx3 tests › linear layout › basic-linear-column-container-items-layout-gravity

3) [firefox] › tests/react.spec.ts:4514:5 › reactlynx3 tests › linear layout › basic-linear-column-container-items-layout-gravity Error: expect(page).toHaveScreenshot(expected) failed 24000 pixels (ratio 0.03 of all image pixels) are different. Snapshot: basic-linear-column-container-items-layout-gravity/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-column-container-items-layout-gravity/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 24000 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 24000 pixels (ratio 0.03 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4520:15

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (4/4) / check

[firefox] › tests/react.spec.ts:4510:5 › reactlynx3 tests › linear layout › basic-linear-column-align-items

2) [firefox] › tests/react.spec.ts:4510:5 › reactlynx3 tests › linear layout › basic-linear-column-align-items Error: expect(page).toHaveScreenshot(expected) failed 52500 pixels (ratio 0.06 of all image pixels) are different. Snapshot: basic-linear-column-align-items/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-column-align-items/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 52500 pixels (ratio 0.06 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 52500 pixels (ratio 0.06 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4512:13

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4626:5 › reactlynx3 tests › flex layout › basic-flex-column-align-items

9) [chromium] › tests/react.spec.ts:4626:5 › reactlynx3 tests › flex layout › basic-flex-column-align-items Error: expect(page).toHaveScreenshot(expected) failed 52500 pixels (ratio 0.19 of all image pixels) are different. Snapshot: basic-flex-column-align-items/index/index.png Call log: - Expect "toHaveScreenshot(basic-flex-column-align-items/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 52500 pixels (ratio 0.19 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 52500 pixels (ratio 0.19 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4628:13

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4608:5 › reactlynx3 tests › flex layout › basic-flex-1

8) [chromium] › tests/react.spec.ts:4608:5 › reactlynx3 tests › flex layout › basic-flex-1 ─────── Error: expect(page).toHaveScreenshot(expected) failed 2500 pixels (ratio 0.01 of all image pixels) are different. Snapshot: basic-flex-1/index/index.png Call log: - Expect "toHaveScreenshot(basic-flex-1/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 2500 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 2500 pixels (ratio 0.01 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4610:13

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4561:5 › reactlynx3 tests › linear layout › basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl

7) [chromium] › tests/react.spec.ts:4561:5 › reactlynx3 tests › linear layout › basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl Error: expect(page).toHaveScreenshot(expected) failed 100800 pixels (ratio 0.36 of all image pixels) are different. Snapshot: basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 100800 pixels (ratio 0.36 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 100800 pixels (ratio 0.36 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4565:15

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4554:5 › reactlynx3 tests › linear layout › basic-linear-column-container-main-axis-justify-content-center

6) [chromium] › tests/react.spec.ts:4554:5 › reactlynx3 tests › linear layout › basic-linear-column-container-main-axis-justify-content-center Error: expect(page).toHaveScreenshot(expected) failed 22500 pixels (ratio 0.08 of all image pixels) are different. Snapshot: basic-linear-column-container-main-axis-justify-content-center/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-column-container-main-axis-justify-content-center/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 22500 pixels (ratio 0.08 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 22500 pixels (ratio 0.08 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4558:15

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4535:5 › reactlynx3 tests › linear layout › basic-linear-child-container-wrap

5) [chromium] › tests/react.spec.ts:4535:5 › reactlynx3 tests › linear layout › basic-linear-child-container-wrap Error: expect(page).toHaveScreenshot(expected) failed 7500 pixels (ratio 0.03 of all image pixels) are different. Snapshot: basic-linear-child-container-wrap/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-child-container-wrap/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 7500 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 7500 pixels (ratio 0.03 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4537:13

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4529:5 › reactlynx3 tests › linear layout › basic-linear-row-container-items-layout-gravity

4) [chromium] › tests/react.spec.ts:4529:5 › reactlynx3 tests › linear layout › basic-linear-row-container-items-layout-gravity Error: expect(page).toHaveScreenshot(expected) failed 24000 pixels (ratio 0.09 of all image pixels) are different. Snapshot: basic-linear-row-container-items-layout-gravity/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-row-container-items-layout-gravity/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 24000 pixels (ratio 0.09 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 24000 pixels (ratio 0.09 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4533:13

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4514:5 › reactlynx3 tests › linear layout › basic-linear-column-container-items-layout-gravity

3) [chromium] › tests/react.spec.ts:4514:5 › reactlynx3 tests › linear layout › basic-linear-column-container-items-layout-gravity Error: expect(page).toHaveScreenshot(expected) failed 24000 pixels (ratio 0.09 of all image pixels) are different. Snapshot: basic-linear-column-container-items-layout-gravity/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-column-container-items-layout-gravity/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 24000 pixels (ratio 0.09 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 24000 pixels (ratio 0.09 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4520:15

Check failure on line 26 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (3/4) / check

[chromium] › tests/react.spec.ts:4510:5 › reactlynx3 tests › linear layout › basic-linear-column-align-items

2) [chromium] › tests/react.spec.ts:4510:5 › reactlynx3 tests › linear layout › basic-linear-column-align-items Error: expect(page).toHaveScreenshot(expected) failed 52500 pixels (ratio 0.19 of all image pixels) are different. Snapshot: basic-linear-column-align-items/index/index.png Call log: - Expect "toHaveScreenshot(basic-linear-column-align-items/index/index.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - waiting for fonts to load... - fonts loaded - 52500 pixels (ratio 0.19 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 52500 pixels (ratio 0.19 of all image pixels) are different. 24 | >[0], 25 | ) => { > 26 | await expect(page).toHaveScreenshot([ | ^ 27 | `${caseName}`, 28 | `${subcaseName}`, 29 | `${label}.png`, at diffScreenShot (/__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:26:22) at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:4512:13
`${caseName}`,
`${subcaseName}`,
`${label}.png`,
Expand Down Expand Up @@ -76,7 +76,8 @@
await expect(target).toHaveCSS('background-color', 'rgb(255, 192, 203)');
});

test('basic-reload', async ({ page }, { title }) => {
test('basic-reload', async ({ page, browserName }, { title }) => {
test.skip(browserName === 'webkit', 'playwright issue, tested locally');
await goto(page, title);
await wait(100);
const target = page.locator('#target');
Expand All @@ -90,7 +91,8 @@
await wait(100);
await expect(await target.getAttribute('style')).toContain('pink');
});
test('basic-reload-page-only-one', async ({ page }, { title }) => {
test('basic-reload-page-only-one', async ({ page, browserName }) => {
test.skip(browserName === 'webkit', 'playwright issue, tested locally');
await goto(page, 'basic-reload');
await wait(100);
await page.evaluate(() => {
Expand All @@ -105,7 +107,7 @@
)
.filter(i => i.getAttribute('lynx-tag') === 'page').length
),
).toBe(1);

Check failure on line 110 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (2/4) / check

[chromium] › tests/react.spec.ts:77:5 › reactlynx3 tests › basic › basic-reload-page-only-one

1) [chromium] › tests/react.spec.ts:77:5 › reactlynx3 tests › basic › basic-reload-page-only-one ─ Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBe(expected) // Object.is equality Expected: 1 Received: 2 108 | .filter(i => i.getAttribute('lynx-tag') === 'page').length 109 | ), > 110 | ).toBe(1); | ^ 111 | }); 112 | test('basic-bindtap', async ({ page }, { title }) => { 113 | await goto(page, title); at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:110:9
});
test('basic-bindtap', async ({ page }, { title }) => {
await goto(page, title);
Expand Down Expand Up @@ -173,7 +175,8 @@
'green',
);
});
test('basic-globalProps-reload', async ({ page }, { title }) => {
test('basic-globalProps-reload', async ({ page, browserName }, {}) => {
test.skip(browserName === 'webkit', 'playwright issue, tested locally');
await goto(page, 'basic-globalProps');
await wait(100);
expect(await page.locator('#target').getAttribute('style')).toContain(
Expand Down Expand Up @@ -1551,8 +1554,8 @@
});
await goto(page, title);
await wait(200);
!isSSR && expect(mts).toBe(true);

Check failure on line 1557 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:1542:5 › reactlynx3 tests › apis › api-global-disallowed-vars

2) [webkit] › tests/react.spec.ts:1542:5 › reactlynx3 tests › apis › api-global-disallowed-vars ── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: false 1555 | await goto(page, title); 1556 | await wait(200); > 1557 | !isSSR && expect(mts).toBe(true); | ^ 1558 | expect(bts).toBe(true); 1559 | }, 1560 | ); at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:1557:31
expect(bts).toBe(true);

Check failure on line 1558 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:1542:5 › reactlynx3 tests › apis › api-global-disallowed-vars

2) [webkit] › tests/react.spec.ts:1542:5 › reactlynx3 tests › apis › api-global-disallowed-vars ── Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: false 1556 | await wait(200); 1557 | !isSSR && expect(mts).toBe(true); > 1558 | expect(bts).toBe(true); | ^ 1559 | }, 1560 | ); 1561 | test( at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:1558:21
},
);
test(
Expand Down Expand Up @@ -2069,7 +2072,7 @@
);

test(
'basic-element-text-set-native-props-with-setData',

Check failure on line 2075 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:2067:7 › reactlynx3 tests › elements › text › basic-element-text-set-native-props-text-do-not-change-inline-text

8) [webkit] › tests/react.spec.ts:2067:7 › reactlynx3 tests › elements › text › basic-element-text-set-native-props-text-do-not-change-inline-text Error: expect(received).toBe(expected) // Object.is equality Expected: 1 Received: 0 2073 | await wait(500); 2074 | let count = await page.getByText('hello').count(); > 2075 | expect(count).toBe(1); | ^ 2076 | count = await page.getByText('--').count(); 2077 | expect(count).toBe(1); 2078 | count = await page.getByText('world').count(); at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:2075:25
async ({ page }, { title }) => {
await goto(page, title);
await wait(300);
Expand All @@ -2084,7 +2087,7 @@
// -- -> nativeText
count = await page.getByText('nativeText').count();
expect(count).toBe(1);
count = await page.getByText('initial').count();

Check failure on line 2090 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright MULTI_THREAD-CSR (1/4) / check

[webkit] › tests/react.spec.ts:2083:7 › reactlynx3 tests › elements › text › basic-element-text-set-native-props-with-setData

9) [webkit] › tests/react.spec.ts:2083:7 › reactlynx3 tests › elements › text › basic-element-text-set-native-props-with-setData Error: expect(received).toBe(expected) // Object.is equality Expected: 1 Received: 0 2088 | // --initialtextinitial 2089 | let count = await page.getByText('--').count(); > 2090 | expect(count).toBe(1); | ^ 2091 | count = await page.getByText('initial').count(); 2092 | expect(count).toBeGreaterThanOrEqual(1); 2093 | await page.locator('#target').click(); at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:2090:25
expect(count).toBeGreaterThanOrEqual(1);
count = await page.getByText('--').count();
expect(count).toBe(0);
Expand Down Expand Up @@ -3796,7 +3799,7 @@
async ({ page, browserName, context }, { title }) => {
const autoplay = [false, false, false];
let manual = false;
let programming = false;

Check failure on line 3802 in packages/web-platform/web-tests/tests/react.spec.ts

View workflow job for this annotation

GitHub Actions / Playwright ALL_ON_UI-SSR (2/4) / check

[chromium] › tests/react.spec.ts:3747:7 › reactlynx3 tests › elements › x-swiper › basic-element-x-swiper-bindchange

3) [chromium] › tests/react.spec.ts:3747:7 › reactlynx3 tests › elements › x-swiper › basic-element-x-swiper-bindchange Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: false 3800 | expect(programming).toBe(true); 3801 | if (browserName === 'chromium') { > 3802 | expect(manual).toBe(true); | ^ 3803 | } 3804 | }, 3805 | ); at /__w/lynx-stack/lynx-stack/packages/web-platform/web-tests/tests/react.spec.ts:3802:28
await page.on('console', async (msg) => {
const event = await msg.args()[0]?.evaluate((e) => ({
type: e.type,
Expand Down
Loading