diff --git a/clo/README.md b/clo/README.md index 191be01692f..b21d48ce933 100644 --- a/clo/README.md +++ b/clo/README.md @@ -5,17 +5,19 @@ This example demos a basic host application loading remote component. - `host` is the host application (cra-based). - `remote` standalone application (cra-based) which exposes `Button` component. -# Running Demo +## Setup -Run `pnpm run start`. This will build and serve both `host` and `remote` on ports 3001 and 3002 respectively. +Run `pnpm install` in this directory to install dependencies for both `host` and `remote`. -- [localhost:3001](http://localhost:3000/) (HOST) -- [localhost:3002](http://localhost:3002/) (STANDALONE REMOTE) +## Running Demo + +Run `pnpm run start`. This will build and serve both `host` and `remote` on ports 3000 and 3002 respectively. -# Running Cypress E2E Tests +- [localhost:3000](http://localhost:3000/) (HOST) +- [localhost:3002](http://localhost:3002/) (STANDALONE REMOTE) -To run tests in interactive mode, run `npm run cypress:debug` from the root directory of the project. It will open Cypress Test Runner and allow to run tests in interactive mode. [More info about "How to run tests"](../../cypress-e2e/README.md#how-to-run-tests) +## Running Playwright E2E Tests -To build app and run test in headless mode, run `yarn e2e:ci`. It will build app and run tests for this workspace in headless mode. If tets failed cypress will create `cypress` directory in sample root folder with screenshots and videos. +To run tests in interactive UI mode, run `pnpm test:e2e:ui`. -["Best Practices, Rules amd more interesting information here](../../cypress-e2e/README.md) +To build the apps, start both servers, and run tests in headless mode, run `pnpm e2e:ci`. diff --git a/clo/cypress.env.json b/clo/cypress.env.json deleted file mode 100644 index c65e6cd032e..00000000000 --- a/clo/cypress.env.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "allure": true, - "allureResultsPath": "../cypress-e2e/results/allure-results" -} diff --git a/clo/e2e/checkCraApps.cy.ts b/clo/e2e/checkCraApps.cy.ts deleted file mode 100644 index f9eda897537..00000000000 --- a/clo/e2e/checkCraApps.cy.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { baseSelectors } from './../../cypress-e2e/common/selectors'; -import { BaseMethods } from '../../cypress-e2e/common/base'; -import { Constants } from '../../cypress-e2e/fixtures/constants'; - -const basePage: BaseMethods = new BaseMethods(); - -const appsData = [ - { - appNameText: Constants.commonConstantsData.basicComponents.host, - host: 3000, - }, - { - appNameText: Constants.commonConstantsData.basicComponents.remote, - host: 3002, - }, -]; - -appsData.forEach((property: { appNameText: string; host: number }) => { - const appName = property.host === 3000 ? appsData[0].appNameText : appsData[1].appNameText; - - describe('CLO', () => { - context(`Check ${appName}`, () => { - beforeEach(() => { - basePage.openLocalhost({ - number: property.host, - }); - }); - - it(`Check ${appName} elements exist on the page`, () => { - basePage.checkElementWithTextPresence({ - selector: baseSelectors.tags.headers.h1, - text: Constants.commonConstantsData.basicComponents.basicHostRemote, - }); - basePage.checkElementWithTextPresence({ - selector: baseSelectors.tags.headers.h2, - text: property.appNameText, - }); - basePage.checkElementWithTextPresence({ - selector: baseSelectors.tags.coreElements.button, - text: Constants.elementsText.craApp.buttonText, - }); - }); - }); - }); -}); diff --git a/clo/e2e/checkCraApps.spec.ts b/clo/e2e/checkCraApps.spec.ts new file mode 100644 index 00000000000..dcda8c7eb6d --- /dev/null +++ b/clo/e2e/checkCraApps.spec.ts @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test'; + +const apps = [ + { port: 3000, name: 'Host' }, + { port: 3002, name: 'Remote' }, +]; + +apps.forEach(({ port, name }) => { + test.describe(`Check ${name}`, () => { + test(`Check ${name} elements exist on the page`, async ({ page }) => { + await page.goto(`http://localhost:${port}`); + await expect(page.getByRole('heading', { level: 1 })).toContainText('Basic Host-Remote'); + await expect(page.getByRole('heading', { level: 2, name })).toBeVisible(); + await expect(page.getByRole('button')).toContainText('Hello from remote'); + }); + }); +}); diff --git a/clo/host/rsbuild.config.ts b/clo/host/rsbuild.config.ts index 7f58692c28e..d5a420c17fc 100644 --- a/clo/host/rsbuild.config.ts +++ b/clo/host/rsbuild.config.ts @@ -9,4 +9,11 @@ export default defineConfig({ }, moduleFederation: { options: mfConfig }, plugins: [pluginReact()], + tools: { + rspack: { + output: { + publicPath: 'auto', + }, + }, + }, }); diff --git a/clo/package.json b/clo/package.json index d16fe879c57..55fe953338c 100644 --- a/clo/package.json +++ b/clo/package.json @@ -9,12 +9,17 @@ "scripts": { "start": "pnpm --filter clo_* start", "build": "pnpm --filter clo_* build", - "preview": "pnpm run build && pnpm --filter clo_* preview", - "e2e:ci": "pnpm start & npx cypress run --config-file ../cypress-e2e/config/cypress.config.ts --config '{\"supportFile\": \"../cypress-e2e/support/e2e.ts\"}' --spec \"./e2e/*.cy.ts\" --browser=chrome && lsof -ti tcp:3000,3001,3002 | xargs kill" + "preview": "pnpm run build && concurrently \"pnpm --filter clo_host preview\" \"pnpm --filter clo_remote preview\"", + "test:e2e": "npx playwright test", + "test:e2e:ui": "npx playwright test --ui", + "test:e2e:debug": "npx playwright test --debug", + "e2e:ci": "pnpm install && npx playwright install --with-deps && npx playwright test --reporter=list" }, "devDependencies": { "wait-on": "7.2.0", "concurrently": "8.2.2", - "forever": "4.0.3" + "forever": "4.0.3", + "@playwright/test": "^1.54.2", + "playwright": "^1.54.2" } } diff --git a/clo/playwright.config.ts b/clo/playwright.config.ts new file mode 100644 index 00000000000..1bc2469e1cc --- /dev/null +++ b/clo/playwright.config.ts @@ -0,0 +1,35 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + testDir: './e2e', + timeout: 60000, + expect: { + timeout: 15000, + }, + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 1 : 0, + workers: process.env.CI ? 1 : undefined, + reporter: [ + ['html', { outputFolder: 'playwright-report', open: 'never' }], + ['list'], + ], + use: { + trace: 'on-first-retry', + screenshot: 'only-on-failure', + video: 'retain-on-failure', + viewport: { width: 1920, height: 1080 }, + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], + webServer: { + command: 'pnpm preview', + port: 3000, + reuseExistingServer: !process.env.CI, + timeout: 120000, + }, +}); diff --git a/clo/remote/rsbuild.config.ts b/clo/remote/rsbuild.config.ts index 15517f208f2..cb5a59607af 100644 --- a/clo/remote/rsbuild.config.ts +++ b/clo/remote/rsbuild.config.ts @@ -9,4 +9,11 @@ export default defineConfig({ }, moduleFederation: { options: mfConfig }, plugins: [pluginReact()], + tools: { + rspack: { + output: { + publicPath: 'auto', + }, + }, + }, }); diff --git a/clo/remote/src/ServiceComponent.js b/clo/remote/src/ServiceComponent.js index 7383d6b1c6e..e5558aeeb8c 100644 --- a/clo/remote/src/ServiceComponent.js +++ b/clo/remote/src/ServiceComponent.js @@ -21,7 +21,7 @@ function fetchData(url) { if (status === 'pending') { throw suspender; } else if (status === 'error') { - throw result; + return { error: result }; } else if (status === 'success') { return result; } @@ -33,6 +33,9 @@ const resource = fetchData('https://jsonplaceholder.typicode.com/todos/1'); function HelloWorld() { const data = resource.read(); // This will suspend if the data isn't ready + if (data?.error) { + return
Error loading data
; + } return
{JSON.stringify(data)}
; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b36983cf0bb..9a7115f4a56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -893,7 +893,7 @@ importers: dependencies: '@modern-js/runtime': specifier: 2.54.6 - version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) + version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)) react: specifier: ~18.3.0 version: 18.3.1 @@ -903,22 +903,22 @@ importers: devDependencies: '@modern-js-app/eslint-config': specifier: 2.54.6 - version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2) + version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2) '@modern-js/app-tools': specifier: 2.54.6 - version: 2.54.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1) + version: 2.54.6(@rspack/core@0.4.5)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))(encoding@0.1.13)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)))(webpack-hot-middleware@2.26.1) '@modern-js/builder-rspack-provider': specifier: 2.46.1 - version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.12)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) + version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@0.7.10)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/express@4.17.21)(esbuild@0.17.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) '@modern-js/eslint-config': specifier: 2.54.6 - version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2) + version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2) '@modern-js/tsconfig': specifier: 2.54.6 version: 2.54.6 '@module-federation/enhanced': specifier: 0.17.1 - version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) + version: 0.17.1(@rspack/core@0.4.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)) husky: specifier: 9.0.11 version: 9.0.11 @@ -936,7 +936,7 @@ importers: dependencies: '@modern-js/runtime': specifier: 2.54.6 - version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)) + version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) react: specifier: ~18.3.0 version: 18.3.1 @@ -946,22 +946,22 @@ importers: devDependencies: '@modern-js-app/eslint-config': specifier: 2.54.6 - version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2) + version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2) '@modern-js/app-tools': specifier: 2.54.6 - version: 2.54.6(@rspack/core@0.4.5)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))(encoding@0.1.13)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)))(webpack-hot-middleware@2.26.1) + version: 2.54.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1) '@modern-js/builder-rspack-provider': specifier: 2.46.1 - version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@0.7.10)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/express@4.17.21)(esbuild@0.17.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) + version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.12)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) '@modern-js/eslint-config': specifier: 2.54.6 - version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2) + version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2) '@modern-js/tsconfig': specifier: 2.54.6 version: 2.54.6 '@module-federation/enhanced': specifier: 0.17.1 - version: 0.17.1(@rspack/core@0.4.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)) + version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) husky: specifier: 9.0.11 version: 9.0.11 @@ -997,7 +997,7 @@ importers: version: 2.68.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@module-federation/modern-js': specifier: 0.17.1 - version: 0.17.1(@rsbuild/core@1.4.11)(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)) + version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) react: specifier: ~18.3.0 version: 18.3.1 @@ -1010,10 +1010,10 @@ importers: version: 2.59.0(typescript@5.6.2) '@modern-js/app-tools': specifier: 2.68.6 - version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)))(webpack-hot-middleware@2.26.1) + version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1) '@modern-js/builder-rspack-provider': specifier: 2.46.1 - version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.11)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) + version: 2.46.1(@babel/traverse@7.28.0)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.6.2) @@ -1022,7 +1022,7 @@ importers: version: 2.68.6 '@module-federation/enhanced': specifier: 0.17.1 - version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)) + version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) husky: specifier: 9.0.11 version: 9.0.11 @@ -1043,7 +1043,7 @@ importers: version: 2.68.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@module-federation/modern-js': specifier: 0.17.1 - version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) + version: 0.17.1(@rsbuild/core@1.4.11)(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)) react: specifier: ~18.3.0 version: 18.3.1 @@ -1056,10 +1056,10 @@ importers: version: 2.59.0(typescript@5.6.2) '@modern-js/app-tools': specifier: 2.68.6 - version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1) + version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)))(webpack-hot-middleware@2.26.1) '@modern-js/builder-rspack-provider': specifier: 2.46.1 - version: 2.46.1(@babel/traverse@7.28.0)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) + version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.11)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.6.2) @@ -1068,7 +1068,7 @@ importers: version: 2.68.6 '@module-federation/enhanced': specifier: 0.17.1 - version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) + version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)) husky: specifier: 9.0.11 version: 9.0.11 @@ -1082,6 +1082,62 @@ importers: specifier: 5.0.8 version: 5.0.8 + clo: + devDependencies: + '@playwright/test': + specifier: ^1.54.2 + version: 1.54.2 + concurrently: + specifier: 8.2.2 + version: 8.2.2 + forever: + specifier: 4.0.3 + version: 4.0.3 + playwright: + specifier: ^1.54.2 + version: 1.54.2 + wait-on: + specifier: 7.2.0 + version: 7.2.0 + + clo/host: + dependencies: + react: + specifier: 17.0.2 + version: 17.0.2 + react-dom: + specifier: 17.0.2 + version: 17.0.2(react@17.0.2) + devDependencies: + '@rsbuild/core': + specifier: 1.4.12 + version: 1.4.12 + '@rsbuild/plugin-react': + specifier: 1.3.4 + version: 1.3.4(@rsbuild/core@1.4.12)(webpack-hot-middleware@2.26.1) + '@rspack/core': + specifier: 1.4.11 + version: 1.4.11(@swc/helpers@0.5.17) + + clo/remote: + dependencies: + react: + specifier: 17.0.2 + version: 17.0.2 + react-dom: + specifier: 17.0.2 + version: 17.0.2(react@17.0.2) + devDependencies: + '@rsbuild/core': + specifier: 1.4.12 + version: 1.4.12 + '@rsbuild/plugin-react': + specifier: 1.3.4 + version: 1.3.4(@rsbuild/core@1.4.12)(webpack-hot-middleware@2.26.1) + '@rspack/core': + specifier: 1.4.11 + version: 1.4.11(@swc/helpers@0.5.17) + cloud/azure-functions-node-v4: devDependencies: concurrently: @@ -17109,8 +17165,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001734: - resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==} + caniuse-lite@1.0.30001735: + resolution: {integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==} case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} @@ -33907,7 +33963,7 @@ snapshots: '@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5) '@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2) '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.32.2 postcss: 8.4.31 react-refresh: 0.14.2 @@ -33950,7 +34006,7 @@ snapshots: '@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5) '@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2) '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.32.2 postcss: 8.4.31 react-refresh: 0.14.2 @@ -33993,7 +34049,7 @@ snapshots: '@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5) '@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2) '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.32.2 postcss: 8.4.31 react-refresh: 0.14.2 @@ -34036,7 +34092,7 @@ snapshots: '@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5) '@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2) '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.32.2 postcss: 8.4.31 react-refresh: 0.14.2 @@ -34079,7 +34135,7 @@ snapshots: '@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5) '@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2) '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.32.2 postcss: 8.4.31 react-refresh: 0.14.2 @@ -34121,7 +34177,7 @@ snapshots: '@modern-js/utils': 2.46.1 '@swc/helpers': 0.5.3 acorn: 8.15.0 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.17.19)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)) cssnano: 6.0.1(postcss@8.4.31) fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)) @@ -34168,7 +34224,7 @@ snapshots: '@modern-js/utils': 2.46.1 '@swc/helpers': 0.5.3 acorn: 8.15.0 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)) cssnano: 6.0.1(postcss@8.4.31) fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)) @@ -34215,7 +34271,7 @@ snapshots: '@modern-js/utils': 2.46.1 '@swc/helpers': 0.5.3 acorn: 8.15.0 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) cssnano: 6.0.1(postcss@8.4.31) fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) @@ -34262,7 +34318,7 @@ snapshots: '@modern-js/utils': 2.46.1 '@swc/helpers': 0.5.3 acorn: 8.15.0 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) cssnano: 6.0.1(postcss@8.4.31) fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) @@ -34309,7 +34365,7 @@ snapshots: '@modern-js/utils': 2.46.1 '@swc/helpers': 0.5.3 acorn: 8.15.0 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) cssnano: 6.0.1(postcss@8.4.31) fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))) @@ -35933,35 +35989,35 @@ snapshots: '@modern-js/utils@2.46.1': dependencies: '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash: 4.17.21 rslog: 1.2.11 '@modern-js/utils@2.54.6': dependencies: '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash: 4.17.21 rslog: 1.2.11 '@modern-js/utils@2.57.0': dependencies: '@swc/helpers': 0.5.3 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash: 4.17.21 rslog: 1.2.11 '@modern-js/utils@2.68.2': dependencies: '@swc/helpers': 0.5.17 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash: 4.17.21 rslog: 1.2.11 '@modern-js/utils@2.68.6': dependencies: '@swc/helpers': 0.5.17 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash: 4.17.21 rslog: 1.2.11 @@ -39553,7 +39609,7 @@ snapshots: '@rspack/core': 1.0.0-alpha.5(@swc/helpers@0.5.11) '@rspack/lite-tapable': 1.0.0-alpha.5 '@swc/helpers': 0.5.11 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.37.1 postcss: 8.4.47 optionalDependencies: @@ -39564,7 +39620,7 @@ snapshots: '@rspack/core': 1.0.14(@swc/helpers@0.5.17) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 core-js: 3.38.1 optionalDependencies: fsevents: 2.3.3 @@ -40267,7 +40323,7 @@ snapshots: '@rsbuild/shared@0.3.4(@swc/helpers@0.5.3)': dependencies: '@rspack/core': 0.5.0(@swc/helpers@0.5.3) - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash: 4.17.21 postcss: 8.4.47 transitivePeerDependencies: @@ -40276,7 +40332,7 @@ snapshots: '@rsbuild/shared@0.7.10(@swc/helpers@0.5.17)': dependencies: '@rspack/core': 0.7.5(@swc/helpers@0.5.17) - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 html-webpack-plugin: html-rspack-plugin@5.7.2(@rspack/core@0.7.5(@swc/helpers@0.5.17)) postcss: 8.4.47 optionalDependencies: @@ -40287,7 +40343,7 @@ snapshots: '@rsbuild/shared@0.7.10(@swc/helpers@0.5.3)': dependencies: '@rspack/core': 0.7.5(@swc/helpers@0.5.3) - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 html-webpack-plugin: html-rspack-plugin@5.7.2(@rspack/core@0.7.5(@swc/helpers@0.5.3)) postcss: 8.4.47 optionalDependencies: @@ -40875,7 +40931,7 @@ snapshots: dependencies: '@module-federation/runtime-tools': 0.1.6 '@rspack/binding': 0.7.5 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 tapable: 2.2.1 webpack-sources: 3.2.3 optionalDependencies: @@ -40885,7 +40941,7 @@ snapshots: dependencies: '@module-federation/runtime-tools': 0.1.6 '@rspack/binding': 0.7.5 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 tapable: 2.2.1 webpack-sources: 3.2.3 optionalDependencies: @@ -40896,7 +40952,7 @@ snapshots: '@module-federation/runtime-tools': 0.2.3 '@rspack/binding': 1.0.0-alpha.5 '@rspack/lite-tapable': 1.0.0-alpha.5 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 optionalDependencies: '@swc/helpers': 0.5.11 @@ -40905,7 +40961,7 @@ snapshots: '@module-federation/runtime-tools': 0.5.1 '@rspack/binding': 1.0.14 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 optionalDependencies: '@swc/helpers': 0.5.17 @@ -42934,7 +42990,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.24.7) '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - esbuild: 0.18.20 + esbuild: 0.17.6 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 @@ -44395,7 +44451,7 @@ snapshots: autoprefixer@10.4.19(postcss@8.4.39): dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -44405,7 +44461,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.32): dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -44415,7 +44471,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.39): dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -44425,7 +44481,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -44435,7 +44491,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -45166,21 +45222,21 @@ snapshots: browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 electron-to-chromium: 1.5.200 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.23.1) browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 electron-to-chromium: 1.5.200 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) browserslist@4.25.2: dependencies: - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 electron-to-chromium: 1.5.200 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.2) @@ -45339,11 +45395,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001734: {} + caniuse-lite@1.0.30001735: {} case-sensitive-paths-webpack-plugin@2.4.0: {} @@ -49788,7 +49844,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -53652,7 +53708,7 @@ snapshots: dependencies: '@next/env': 12.3.4 '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 postcss: 8.4.14 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -53682,7 +53738,7 @@ snapshots: '@next/env': 14.2.13 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001734 + caniuse-lite: 1.0.30001735 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8d96e331ed1..335d6af1093 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,6 +22,8 @@ packages: - "basic-host-remote/*" - "bi-directional" - "bi-directional/*" + - "clo" + - "clo/*" - "cloud/azure-functions-node-v4" - "cloud/azure-functions-node-v4/*" - "complete-react-case"