diff --git a/.changeset/gold-goats-remain.md b/.changeset/gold-goats-remain.md new file mode 100644 index 0000000000..848251dee2 --- /dev/null +++ b/.changeset/gold-goats-remain.md @@ -0,0 +1,5 @@ +--- +"@lynx-js/web-core": patch +--- + +fix: lynx-view `updateGlobalProps` method will also update globalProps, so `reload()` will use the latest updated globalProps. diff --git a/packages/web-platform/web-core/src/apis/LynxView.ts b/packages/web-platform/web-core/src/apis/LynxView.ts index f2fe54c941..0c0965053f 100644 --- a/packages/web-platform/web-core/src/apis/LynxView.ts +++ b/packages/web-platform/web-core/src/apis/LynxView.ts @@ -280,6 +280,7 @@ export class LynxView extends HTMLElement { */ updateGlobalProps(data: Cloneable) { this.#instance?.updateGlobalProps(data); + this.globalProps = data; } /** diff --git a/packages/web-platform/web-tests/tests/react.spec.ts b/packages/web-platform/web-tests/tests/react.spec.ts index 2bcea7c9b1..bac2e2a545 100644 --- a/packages/web-platform/web-tests/tests/react.spec.ts +++ b/packages/web-platform/web-tests/tests/react.spec.ts @@ -4,6 +4,7 @@ import { swipe, dragAndHold } from './utils.js'; import { test, expect } from './coverage-fixture.js'; import type { Page } from '@playwright/test'; +import type { LynxView } from '../../web-core/src/index.js'; const ENABLE_MULTI_THREAD = !!process.env['ENABLE_MULTI_THREAD']; const wait = async (ms: number) => { await new Promise((resolve) => { @@ -148,6 +149,26 @@ test.describe('reactlynx3 tests', () => { 'green', ); }); + test('basic-globalProps-reload', async ({ page }, { title }) => { + await goto(page, 'basic-globalProps'); + await wait(100); + expect(await page.locator('#target').getAttribute('style')).toContain( + 'pink', + ); + await page.evaluate(() => { + (document.querySelector('lynx-view') as LynxView)?.updateGlobalProps({ + backgroundColor: 'green', + }); + }); + await wait(500); + await page.evaluate(() => { + (document.querySelector('lynx-view') as LynxView)?.reload(); + }); + await wait(500); + expect(await page.locator('#target').getAttribute('style')).toContain( + 'green', + ); + }); test('basic-event-dataset', async ({ page }, { title }) => { await goto(page, title); await wait(100);