(async () => {
- console.log(`After mount`);
-});
diff --git a/tests/components/ct-svelte-vite/playwright/svelte.config.js b/tests/components/ct-svelte-vite/playwright/svelte.config.js
deleted file mode 100644
index 09a1bf7a7b225..0000000000000
--- a/tests/components/ct-svelte-vite/playwright/svelte.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
-
-export default {
- preprocess: vitePreprocess()
-}
diff --git a/tests/components/ct-svelte-vite/public/favicon.ico b/tests/components/ct-svelte-vite/public/favicon.ico
deleted file mode 100644
index d75d248ef0b15..0000000000000
Binary files a/tests/components/ct-svelte-vite/public/favicon.ico and /dev/null differ
diff --git a/tests/components/ct-svelte-vite/src/App.svelte b/tests/components/ct-svelte-vite/src/App.svelte
deleted file mode 100644
index 78f04211bd2bb..0000000000000
--- a/tests/components/ct-svelte-vite/src/App.svelte
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-{#if path === '/'}
-
-{:else if path === '/dashboard'}
-
-{/if}
diff --git a/tests/components/ct-svelte-vite/src/assets/index.css b/tests/components/ct-svelte-vite/src/assets/index.css
deleted file mode 100644
index 97495c44b8634..0000000000000
--- a/tests/components/ct-svelte-vite/src/assets/index.css
+++ /dev/null
@@ -1,20 +0,0 @@
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
- sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
- monospace;
-}
-
-@media (prefers-color-scheme: light) {
- :root {
- color: #e3e3e3;
- background-color: #1b1b1d;
- }
-}
diff --git a/tests/components/ct-svelte-vite/src/components/Button.svelte b/tests/components/ct-svelte-vite/src/components/Button.svelte
deleted file mode 100644
index 2fdaca299befd..0000000000000
--- a/tests/components/ct-svelte-vite/src/components/Button.svelte
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/tests/components/ct-svelte-vite/src/components/Context.svelte b/tests/components/ct-svelte-vite/src/components/Context.svelte
deleted file mode 100644
index 734c9938ba128..0000000000000
--- a/tests/components/ct-svelte-vite/src/components/Context.svelte
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-{contextValue}
diff --git a/tests/components/ct-svelte-vite/src/components/Counter.svelte b/tests/components/ct-svelte-vite/src/components/Counter.svelte
deleted file mode 100644
index 284f12cd35d80..0000000000000
--- a/tests/components/ct-svelte-vite/src/components/Counter.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/tests/components/ct-svelte-vite/src/components/DefaultSlot.svelte b/tests/components/ct-svelte-vite/src/components/DefaultSlot.svelte
deleted file mode 100644
index 7eba923f3b70a..0000000000000
--- a/tests/components/ct-svelte-vite/src/components/DefaultSlot.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
Welcome!
-
- {@render children()}
-
-
-
diff --git a/tests/components/ct-svelte-vite/src/components/Empty.svelte b/tests/components/ct-svelte-vite/src/components/Empty.svelte
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/tests/components/ct-svelte-vite/src/components/MultiRoot.svelte b/tests/components/ct-svelte-vite/src/components/MultiRoot.svelte
deleted file mode 100644
index 87996d0ce0062..0000000000000
--- a/tests/components/ct-svelte-vite/src/components/MultiRoot.svelte
+++ /dev/null
@@ -1,2 +0,0 @@
-root 1
-root 2
diff --git a/tests/components/ct-svelte-vite/src/components/NamedSlots.svelte b/tests/components/ct-svelte-vite/src/components/NamedSlots.svelte
deleted file mode 100644
index e095a50dcf1b0..0000000000000
--- a/tests/components/ct-svelte-vite/src/components/NamedSlots.svelte
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- {@render main()}
-
-
-
diff --git a/tests/components/ct-svelte-vite/src/main.ts b/tests/components/ct-svelte-vite/src/main.ts
deleted file mode 100644
index 4e7ad898e91d7..0000000000000
--- a/tests/components/ct-svelte-vite/src/main.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import App from './App.svelte';
-import './assets/index.css';
-
-const app = new App({
- target: document.getElementById('app')!
-});
-
-export default app;
diff --git a/tests/components/ct-svelte-vite/src/pages/DashboardPage.svelte b/tests/components/ct-svelte-vite/src/pages/DashboardPage.svelte
deleted file mode 100644
index 161f5338e8871..0000000000000
--- a/tests/components/ct-svelte-vite/src/pages/DashboardPage.svelte
+++ /dev/null
@@ -1 +0,0 @@
-Dashboard
diff --git a/tests/components/ct-svelte-vite/src/pages/LoginPage.svelte b/tests/components/ct-svelte-vite/src/pages/LoginPage.svelte
deleted file mode 100644
index 3c359ab27c9ad..0000000000000
--- a/tests/components/ct-svelte-vite/src/pages/LoginPage.svelte
+++ /dev/null
@@ -1 +0,0 @@
-Login
diff --git a/tests/components/ct-svelte-vite/src/store/index.ts b/tests/components/ct-svelte-vite/src/store/index.ts
deleted file mode 100644
index 43d7ee31fc435..0000000000000
--- a/tests/components/ct-svelte-vite/src/store/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export let remountCount = 0;
-export function update() {
- remountCount++;
-}
diff --git a/tests/components/ct-svelte-vite/src/vite-env.d.ts b/tests/components/ct-svelte-vite/src/vite-env.d.ts
deleted file mode 100644
index 4078e7476a2ea..0000000000000
--- a/tests/components/ct-svelte-vite/src/vite-env.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-///
-///
diff --git a/tests/components/ct-svelte-vite/tests/events.spec.ts b/tests/components/ct-svelte-vite/tests/events.spec.ts
deleted file mode 100644
index 002229d6bde63..0000000000000
--- a/tests/components/ct-svelte-vite/tests/events.spec.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Button from '@/components/Button.svelte';
-
-test('emit an submit event when the button is clicked', async ({ mount }) => {
- const messages: string[] = [];
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: (data: string) => messages.push(data),
- },
- });
- await component.click();
- expect(messages).toEqual(['hello']);
-});
diff --git a/tests/components/ct-svelte-vite/tests/render.spec.ts b/tests/components/ct-svelte-vite/tests/render.spec.ts
deleted file mode 100644
index c28618a666ff0..0000000000000
--- a/tests/components/ct-svelte-vite/tests/render.spec.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import type { HooksConfig } from '../playwright';
-import Button from '@/components/Button.svelte';
-import Empty from '@/components/Empty.svelte';
-import Context from '@/components/Context.svelte';
-
-test('render props', async ({ mount }) => {
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await expect(component).toContainText('Submit');
-});
-
-test('get textContent of the empty component', async ({ mount }) => {
- const component = await mount(Empty);
- expect(await component.allTextContents()).toEqual(['']);
- expect(await component.textContent()).toBe('');
- await expect(component).toHaveText('');
-});
-
-test('render context', async ({ mount }) => {
- const component = await mount(Context, {
- hooksConfig: {
- context: 'context-value',
- }
- });
- await expect(component).toContainText('context-value');
-});
diff --git a/tests/components/ct-svelte-vite/tests/router.spec.ts b/tests/components/ct-svelte-vite/tests/router.spec.ts
deleted file mode 100644
index 127620b3c9fb5..0000000000000
--- a/tests/components/ct-svelte-vite/tests/router.spec.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import App from '@/App.svelte';
-
-test('navigate to a page by clicking a link', async ({ page, mount }) => {
- const component = await mount(App);
- await expect(component.getByRole('main')).toHaveText('Login');
- await expect(page).toHaveURL('/');
- await component.getByRole('link', { name: 'Dashboard' }).click();
- await expect(component.getByRole('main')).toHaveText('Dashboard');
- await expect(page).toHaveURL('/dashboard');
-});
diff --git a/tests/components/ct-svelte-vite/tests/slots.spec.ts b/tests/components/ct-svelte-vite/tests/slots.spec.ts
deleted file mode 100644
index 949a51e74761b..0000000000000
--- a/tests/components/ct-svelte-vite/tests/slots.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import DefaultSlot from '@/components/DefaultSlot.svelte';
-import NamedSlots from '@/components/NamedSlots.svelte';
-
-test('render main children slot', async ({ mount }) => {
- const component = await mount(DefaultSlot, {
- slots: {
- children: 'Main Content',
- },
- });
- await expect(component).toContainText('Main Content');
-});
-
-test('render a component with a named slot', async ({ mount }) => {
- const component = await mount(NamedSlots, {
- slots: {
- header: 'Header',
- main: 'Main Content',
- footer: 'Footer',
- },
- });
- await expect(component).toContainText('Header');
- await expect(component).toContainText('Main Content');
- await expect(component).toContainText('Footer');
-});
diff --git a/tests/components/ct-svelte-vite/tests/unmount.spec.ts b/tests/components/ct-svelte-vite/tests/unmount.spec.ts
deleted file mode 100644
index a3ec17c04b3f4..0000000000000
--- a/tests/components/ct-svelte-vite/tests/unmount.spec.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Button from '@/components/Button.svelte';
-import MultiRoot from '@/components/MultiRoot.svelte';
-
-test('unmount', async ({ page, mount }) => {
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await expect(page.locator('#root')).toContainText('Submit');
- await component.unmount();
- await expect(page.locator('#root')).not.toContainText('Submit');
-});
-
-test('unmount a multi root component', async ({ mount, page }) => {
- const component = await mount(MultiRoot);
- await expect(page.locator('#root')).toContainText('root 1');
- await expect(page.locator('#root')).toContainText('root 2');
- await component.unmount();
- await expect(page.locator('#root')).not.toContainText('root 1');
- await expect(page.locator('#root')).not.toContainText('root 2');
-});
-
-test('unmount twice throws an error', async ({ mount }) => {
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await component.unmount();
- await expect(component.unmount()).rejects.toThrowError('Component was not mounted');
-});
-
-test('mount then unmount then mount', async ({ mount }) => {
- let component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await component.unmount();
- component = await mount(Button, {
- props: {
- title: 'Save',
- onsubmit: () => {},
- },
- });
- await expect(component).toContainText('Save');
-});
diff --git a/tests/components/ct-svelte-vite/tests/update.spec.ts b/tests/components/ct-svelte-vite/tests/update.spec.ts
deleted file mode 100644
index 96bfb37915958..0000000000000
--- a/tests/components/ct-svelte-vite/tests/update.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Counter from '@/components/Counter.svelte';
-
-test('update props without remounting', async ({ mount }) => {
- const component = await mount(Counter, {
- props: {
- count: 9001,
- onsubmit: () => {},
- },
- });
- await expect(component.getByTestId('props')).toContainText('9001');
-
- await component.update({
- props: {
- count: 1337,
- },
- });
- await expect(component).not.toContainText('9001');
- await expect(component.getByTestId('props')).toContainText('1337');
-
- await expect(component.getByTestId('remount-count')).toContainText('1');
-});
-
-test('update event listeners without remounting', async ({ mount }) => {
- const component = await mount(Counter);
-
- const messages: string[] = [];
- await component.update({
- props: {
- onsubmit: (data: string) => messages.push(data),
- }
- });
- await component.click();
- expect(messages).toEqual(['hello']);
-
- await expect(component.getByTestId('remount-count')).toContainText('1');
-});
diff --git a/tests/components/ct-svelte-vite/tsconfig.json b/tests/components/ct-svelte-vite/tsconfig.json
deleted file mode 100644
index 4dc15b75b04c0..0000000000000
--- a/tests/components/ct-svelte-vite/tsconfig.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "extends": "@tsconfig/svelte/tsconfig.json",
- "compilerOptions": {
- "target": "esnext",
- "useDefineForClassFields": true,
- "module": "esnext",
- "resolveJsonModule": true,
- /**
- * Typecheck JS in `.svelte` and `.js` files by default.
- * Disable checkJs if you'd like to use dynamic types in JS.
- * Note that setting allowJs false does not prevent the use
- * of JS in `.svelte` files.
- */
- "allowJs": true,
- "checkJs": true,
- "skipLibCheck": true,
- "strict": true,
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"],
- "*": ["_"],
- }
- },
- "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte", "src/**/*.spec.*/*", "tests/**/*.ts"],
- "references": [{ "path": "./tsconfig.node.json" }]
-}
diff --git a/tests/components/ct-svelte-vite/tsconfig.node.json b/tests/components/ct-svelte-vite/tsconfig.node.json
deleted file mode 100644
index e993792cb12c9..0000000000000
--- a/tests/components/ct-svelte-vite/tsconfig.node.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "esnext",
- "moduleResolution": "node"
- },
- "include": ["vite.config.ts"]
-}
diff --git a/tests/components/ct-svelte-vite/vite.config.ts b/tests/components/ct-svelte-vite/vite.config.ts
deleted file mode 100644
index 401b4d4bd6b14..0000000000000
--- a/tests/components/ct-svelte-vite/vite.config.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { defineConfig } from 'vite'
-import { svelte } from '@sveltejs/vite-plugin-svelte'
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [svelte()]
-})
diff --git a/tests/components/ct-svelte/.gitignore b/tests/components/ct-svelte/.gitignore
deleted file mode 100644
index 2347f3ca3be94..0000000000000
--- a/tests/components/ct-svelte/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/node_modules/
-/public/build/
-/public/tests/
-
-.DS_Store
diff --git a/tests/components/ct-svelte/README.md b/tests/components/ct-svelte/README.md
deleted file mode 100644
index 8ca4fcaff9912..0000000000000
--- a/tests/components/ct-svelte/README.md
+++ /dev/null
@@ -1,109 +0,0 @@
-*Psst — looking for a more complete solution? Check out [SvelteKit](https://kit.svelte.dev), the official framework for building web applications of all sizes, with a beautiful development experience and flexible filesystem-based routing.*
-
-*Looking for a shareable component template instead? You can [use SvelteKit for that as well](https://kit.svelte.dev/docs#packaging) or the older [sveltejs/component-template](https://github.com/sveltejs/component-template)*
-
----
-
-# svelte app
-
-This is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template.
-
-To create a new project based on this template using [degit](https://github.com/Rich-Harris/degit):
-
-```bash
-npx degit sveltejs/template svelte-app
-cd svelte-app
-```
-
-*Note that you will need to have [Node.js](https://nodejs.org) installed.*
-
-
-## Get started
-
-Install the dependencies...
-
-```bash
-cd svelte-app
-npm install
-```
-
-...then start [Rollup](https://rollupjs.org):
-
-```bash
-npm run dev
-```
-
-Navigate to [localhost:8080](http://localhost:8080). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.
-
-By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the `sirv` commands in package.json to include the option `--host 0.0.0.0`.
-
-If you're using [Visual Studio Code](https://code.visualstudio.com/) we recommend installing the official extension [Svelte for VS Code](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). If you are using other editors you may need to install a plugin in order to get syntax highlighting and intellisense.
-
-## Building and running in production mode
-
-To create an optimised version of the app:
-
-```bash
-npm run build
-```
-
-You can run the newly built app with `npm run start`. This uses [sirv](https://github.com/lukeed/sirv), which is included in your package.json's `dependencies` so that the app will work when you deploy to platforms like [Heroku](https://heroku.com).
-
-
-## Single-page app mode
-
-By default, sirv will only respond to requests that match files in `public`. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere.
-
-If you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for *any* path. You can make it so by editing the `"start"` command in package.json:
-
-```js
-"start": "sirv public --single"
-```
-
-## Using TypeScript
-
-This template comes with a script to set up a TypeScript development environment, you can run it immediately after cloning the template with:
-
-```bash
-node scripts/setupTypeScript.js
-```
-
-Or remove the script via:
-
-```bash
-rm scripts/setupTypeScript.js
-```
-
-If you want to use `baseUrl` or `path` aliases within your `tsconfig`, you need to set up `@rollup/plugin-alias` to tell Rollup to resolve the aliases. For more info, see [this StackOverflow question](https://stackoverflow.com/questions/63427935/setup-tsconfig-path-in-svelte).
-
-## Deploying to the web
-
-### With [Vercel](https://vercel.com)
-
-Install `vercel` if you haven't already:
-
-```bash
-npm install -g vercel
-```
-
-Then, from within your project folder:
-
-```bash
-cd public
-vercel deploy --name my-project
-```
-
-### With [surge](https://surge.sh/)
-
-Install `surge` if you haven't already:
-
-```bash
-npm install -g surge
-```
-
-Then, from within your project folder:
-
-```bash
-npm run build
-surge public my-project.surge.sh
-```
diff --git a/tests/components/ct-svelte/package.json b/tests/components/ct-svelte/package.json
deleted file mode 100644
index fc2e6779861a7..0000000000000
--- a/tests/components/ct-svelte/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "ct-svelte",
- "version": "1.0.0",
- "private": true,
- "scripts": {
- "build": "rollup -c",
- "dev": "rollup -c -w",
- "start": "sirv public --no-clear",
- "typecheck": "tsc --noEmit"
- },
- "devDependencies": {
- "@rollup/plugin-commonjs": "^17.0.0",
- "@rollup/plugin-node-resolve": "^11.0.0",
- "rollup": "^2.3.4",
- "rollup-plugin-css-only": "^3.1.0",
- "rollup-plugin-livereload": "^2.0.0",
- "rollup-plugin-svelte": "^7.0.0",
- "rollup-plugin-terser": "^7.0.0",
- "sirv-cli": "^2.0.0"
- },
- "dependencies": {
- "svelte": "^5.37.3"
- }
-}
diff --git a/tests/components/ct-svelte/playwright.config.ts b/tests/components/ct-svelte/playwright.config.ts
deleted file mode 100644
index e26caad73687b..0000000000000
--- a/tests/components/ct-svelte/playwright.config.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { defineConfig, devices } from '@playwright/experimental-ct-svelte';
-import { resolve } from 'path';
-
-export default defineConfig({
- testDir: 'tests',
- forbidOnly: !!process.env.CI,
- retries: process.env.CI ? 2 : 0,
- reporter: process.env.CI ? 'html' : 'line',
- use: {
- trace: 'on-first-retry',
- ctViteConfig: {
- resolve: {
- alias: {
- '@': resolve(__dirname, './src'),
- }
- }
- }
- },
- projects: [
- {
- name: 'chromium',
- use: { ...devices['Desktop Chrome'] },
- },
- {
- name: 'firefox',
- use: { ...devices['Desktop Firefox'] },
- },
- {
- name: 'webkit',
- use: { ...devices['Desktop Safari'] },
- },
- ],
-});
diff --git a/tests/components/ct-svelte/playwright/index.html b/tests/components/ct-svelte/playwright/index.html
deleted file mode 100644
index 43136a165e2a7..0000000000000
--- a/tests/components/ct-svelte/playwright/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- Svelte Test
-
-
-
-
-
-
diff --git a/tests/components/ct-svelte/playwright/index.ts b/tests/components/ct-svelte/playwright/index.ts
deleted file mode 100644
index fe89c98e10d87..0000000000000
--- a/tests/components/ct-svelte/playwright/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// @ts-check
-import '../src/assets/index.css';
-import { beforeMount, afterMount } from '@playwright/experimental-ct-svelte/hooks';
-
-export type HooksConfig = {
- route: string;
-}
-
-beforeMount(async ({ hooksConfig }) => {
- console.log(`Before mount: ${JSON.stringify(hooksConfig)}`);
-});
-
-afterMount(async () => {
- console.log(`After mount`);
-});
diff --git a/tests/components/ct-svelte/public/favicon.png b/tests/components/ct-svelte/public/favicon.png
deleted file mode 100644
index 7e6f5eb5a2f1f..0000000000000
Binary files a/tests/components/ct-svelte/public/favicon.png and /dev/null differ
diff --git a/tests/components/ct-svelte/public/index.html b/tests/components/ct-svelte/public/index.html
deleted file mode 100644
index 74558940d085b..0000000000000
--- a/tests/components/ct-svelte/public/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
- Svelte app
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/components/ct-svelte/rollup.config.js b/tests/components/ct-svelte/rollup.config.js
deleted file mode 100644
index 10b425f1fb9d1..0000000000000
--- a/tests/components/ct-svelte/rollup.config.js
+++ /dev/null
@@ -1,121 +0,0 @@
-import svelte from 'rollup-plugin-svelte';
-import commonjs from '@rollup/plugin-commonjs';
-import resolve from '@rollup/plugin-node-resolve';
-import livereload from 'rollup-plugin-livereload';
-import { terser } from 'rollup-plugin-terser';
-import css from 'rollup-plugin-css-only';
-
-const production = !process.env.ROLLUP_WATCH;
-
-function serve() {
- let server;
-
- function toExit() {
- if (server) server.kill(0);
- }
-
- return {
- writeBundle() {
- if (server) return;
- server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
- stdio: ['ignore', 'inherit', 'inherit'],
- shell: true
- });
-
- process.on('SIGTERM', toExit);
- process.on('exit', toExit);
- }
- };
-}
-
-const prod = {
- input: 'src/main.js',
- output: {
- sourcemap: true,
- format: 'iife',
- name: 'app',
- file: 'public/build/bundle.js'
- },
- plugins: [
- svelte({
- compilerOptions: {
- // enable run-time checks when not in production
- dev: !production
- }
- }),
- // we'll extract any component CSS out into
- // a separate file - better for performance
- css({ output: 'bundle.css' }),
-
- // If you have external dependencies installed from
- // npm, you'll most likely need these plugins. In
- // some cases you'll need additional configuration -
- // consult the documentation for details:
- // https://github.com/rollup/plugins/tree/master/packages/commonjs
- resolve({
- browser: true,
- dedupe: ['svelte']
- }),
- commonjs(),
-
- // In dev mode, call `npm run start` once
- // the bundle has been generated
- !production && serve(),
-
- // Watch the `public` directory and refresh the
- // browser on changes when not in production
- !production && livereload('public'),
-
- // If we're building for production (npm run build
- // instead of npm run dev), minify
- production && terser()
- ],
- watch: {
- clearScreen: false
- }
-};
-
-const test = {
- input: 'src/tests.js',
- output: {
- sourcemap: true,
- format: 'iife',
- name: 'app',
- file: 'public/tests/bundle.js'
- },
- plugins: [
- svelte({
- compilerOptions: {
- // enable run-time checks when not in production
- dev: !production
- }
- }),
- // we'll extract any component CSS out into
- // a separate file - better for performance
- css({ output: 'bundle.css' }),
-
- // If you have external dependencies installed from
- // npm, you'll most likely need these plugins. In
- // some cases you'll need additional configuration -
- // consult the documentation for details:
- // https://github.com/rollup/plugins/tree/master/packages/commonjs
- resolve({
- browser: true,
- dedupe: ['svelte']
- }),
- commonjs(),
-
- // Watch the `public` directory and refresh the
- // browser on changes when not in production
- !production && livereload('public'),
-
- // If we're building for production (npm run build
- // instead of npm run dev), minify
- production && terser()
- ],
- watch: {
- clearScreen: false
- },
-};
-
-export default [ prod, test ];
diff --git a/tests/components/ct-svelte/scripts/setupTypeScript.js b/tests/components/ct-svelte/scripts/setupTypeScript.js
deleted file mode 100644
index e6184aa223822..0000000000000
--- a/tests/components/ct-svelte/scripts/setupTypeScript.js
+++ /dev/null
@@ -1,121 +0,0 @@
-// @ts-check
-
-/** This script modifies the project to support TS code in .svelte files like:
-
-
-
- As well as validating the code for CI.
- */
-
-/** To work on this script:
- rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template
-*/
-
-const fs = require("fs")
-const path = require("path")
-const { argv } = require("process")
-
-const projectRoot = argv[2] || path.join(__dirname, "..")
-
-// Add deps to pkg.json
-const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8"))
-packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, {
- "svelte-check": "^2.0.0",
- "svelte-preprocess": "^4.0.0",
- "@rollup/plugin-typescript": "^8.0.0",
- "typescript": "^4.0.0",
- "tslib": "^2.0.0",
- "@tsconfig/svelte": "^2.0.0"
-})
-
-// Add script for checking
-packageJSON.scripts = Object.assign(packageJSON.scripts, {
- "check": "svelte-check --tsconfig ./tsconfig.json"
-})
-
-// Write the package JSON
-fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " "))
-
-// mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too
-const beforeMainJSPath = path.join(projectRoot, "src", "main.js")
-const afterMainTSPath = path.join(projectRoot, "src", "main.ts")
-fs.renameSync(beforeMainJSPath, afterMainTSPath)
-
-// Switch the app.svelte file to use TS
-const appSveltePath = path.join(projectRoot, "src", "App.svelte")
-let appFile = fs.readFileSync(appSveltePath, "utf8")
-appFile = appFile.replace("
-
-
-{#if path === '/'}
-
-{:else if path === '/dashboard'}
-
-{/if}
diff --git a/tests/components/ct-svelte/src/assets/index.css b/tests/components/ct-svelte/src/assets/index.css
deleted file mode 100644
index 97495c44b8634..0000000000000
--- a/tests/components/ct-svelte/src/assets/index.css
+++ /dev/null
@@ -1,20 +0,0 @@
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
- sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
- monospace;
-}
-
-@media (prefers-color-scheme: light) {
- :root {
- color: #e3e3e3;
- background-color: #1b1b1d;
- }
-}
diff --git a/tests/components/ct-svelte/src/components/Button.svelte b/tests/components/ct-svelte/src/components/Button.svelte
deleted file mode 100644
index 2fdaca299befd..0000000000000
--- a/tests/components/ct-svelte/src/components/Button.svelte
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/tests/components/ct-svelte/src/components/Component.svelte b/tests/components/ct-svelte/src/components/Component.svelte
deleted file mode 100644
index 179f993315f43..0000000000000
--- a/tests/components/ct-svelte/src/components/Component.svelte
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/tests/components/ct-svelte/src/components/Counter.svelte b/tests/components/ct-svelte/src/components/Counter.svelte
deleted file mode 100644
index 284f12cd35d80..0000000000000
--- a/tests/components/ct-svelte/src/components/Counter.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/tests/components/ct-svelte/src/components/DefaultSlot.svelte b/tests/components/ct-svelte/src/components/DefaultSlot.svelte
deleted file mode 100644
index 7eba923f3b70a..0000000000000
--- a/tests/components/ct-svelte/src/components/DefaultSlot.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
Welcome!
-
- {@render children()}
-
-
-
diff --git a/tests/components/ct-svelte/src/components/Empty.svelte b/tests/components/ct-svelte/src/components/Empty.svelte
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/tests/components/ct-svelte/src/components/MultiRoot.svelte b/tests/components/ct-svelte/src/components/MultiRoot.svelte
deleted file mode 100644
index 87996d0ce0062..0000000000000
--- a/tests/components/ct-svelte/src/components/MultiRoot.svelte
+++ /dev/null
@@ -1,2 +0,0 @@
-root 1
-root 2
diff --git a/tests/components/ct-svelte/src/components/NamedSlots.svelte b/tests/components/ct-svelte/src/components/NamedSlots.svelte
deleted file mode 100644
index e095a50dcf1b0..0000000000000
--- a/tests/components/ct-svelte/src/components/NamedSlots.svelte
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- {@render main()}
-
-
-
diff --git a/tests/components/ct-svelte/src/main.js b/tests/components/ct-svelte/src/main.js
deleted file mode 100644
index e08102368814c..0000000000000
--- a/tests/components/ct-svelte/src/main.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import App from './App.svelte';
-import './assets/index.css';
-
-const app = new App({
- target: document.body,
-});
-
-export default app;
diff --git a/tests/components/ct-svelte/src/pages/DashboardPage.svelte b/tests/components/ct-svelte/src/pages/DashboardPage.svelte
deleted file mode 100644
index 161f5338e8871..0000000000000
--- a/tests/components/ct-svelte/src/pages/DashboardPage.svelte
+++ /dev/null
@@ -1 +0,0 @@
-Dashboard
diff --git a/tests/components/ct-svelte/src/pages/LoginPage.svelte b/tests/components/ct-svelte/src/pages/LoginPage.svelte
deleted file mode 100644
index 3c359ab27c9ad..0000000000000
--- a/tests/components/ct-svelte/src/pages/LoginPage.svelte
+++ /dev/null
@@ -1 +0,0 @@
-Login
diff --git a/tests/components/ct-svelte/src/store/index.ts b/tests/components/ct-svelte/src/store/index.ts
deleted file mode 100644
index 43d7ee31fc435..0000000000000
--- a/tests/components/ct-svelte/src/store/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export let remountCount = 0;
-export function update() {
- remountCount++;
-}
diff --git a/tests/components/ct-svelte/tests/events.spec.ts b/tests/components/ct-svelte/tests/events.spec.ts
deleted file mode 100644
index 002229d6bde63..0000000000000
--- a/tests/components/ct-svelte/tests/events.spec.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Button from '@/components/Button.svelte';
-
-test('emit an submit event when the button is clicked', async ({ mount }) => {
- const messages: string[] = [];
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: (data: string) => messages.push(data),
- },
- });
- await component.click();
- expect(messages).toEqual(['hello']);
-});
diff --git a/tests/components/ct-svelte/tests/render.spec.ts b/tests/components/ct-svelte/tests/render.spec.ts
deleted file mode 100644
index e1d9939e25bf0..0000000000000
--- a/tests/components/ct-svelte/tests/render.spec.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Button from '@/components/Button.svelte';
-import Empty from '@/components/Empty.svelte';
-
-test('render props', async ({ mount }) => {
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await expect(component).toContainText('Submit');
-});
-
-test('get textContent of the empty component', async ({ mount }) => {
- const component = await mount(Empty);
- expect(await component.allTextContents()).toEqual(['']);
- expect(await component.textContent()).toBe('');
- await expect(component).toHaveText('');
-});
diff --git a/tests/components/ct-svelte/tests/router.spec.ts b/tests/components/ct-svelte/tests/router.spec.ts
deleted file mode 100644
index 127620b3c9fb5..0000000000000
--- a/tests/components/ct-svelte/tests/router.spec.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import App from '@/App.svelte';
-
-test('navigate to a page by clicking a link', async ({ page, mount }) => {
- const component = await mount(App);
- await expect(component.getByRole('main')).toHaveText('Login');
- await expect(page).toHaveURL('/');
- await component.getByRole('link', { name: 'Dashboard' }).click();
- await expect(component.getByRole('main')).toHaveText('Dashboard');
- await expect(page).toHaveURL('/dashboard');
-});
diff --git a/tests/components/ct-svelte/tests/slots.spec.ts b/tests/components/ct-svelte/tests/slots.spec.ts
deleted file mode 100644
index 949a51e74761b..0000000000000
--- a/tests/components/ct-svelte/tests/slots.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import DefaultSlot from '@/components/DefaultSlot.svelte';
-import NamedSlots from '@/components/NamedSlots.svelte';
-
-test('render main children slot', async ({ mount }) => {
- const component = await mount(DefaultSlot, {
- slots: {
- children: 'Main Content',
- },
- });
- await expect(component).toContainText('Main Content');
-});
-
-test('render a component with a named slot', async ({ mount }) => {
- const component = await mount(NamedSlots, {
- slots: {
- header: 'Header',
- main: 'Main Content',
- footer: 'Footer',
- },
- });
- await expect(component).toContainText('Header');
- await expect(component).toContainText('Main Content');
- await expect(component).toContainText('Footer');
-});
diff --git a/tests/components/ct-svelte/tests/unmount.spec.ts b/tests/components/ct-svelte/tests/unmount.spec.ts
deleted file mode 100644
index 391a72ecc5eb9..0000000000000
--- a/tests/components/ct-svelte/tests/unmount.spec.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Button from '@/components/Button.svelte';
-import MultiRoot from '@/components/MultiRoot.svelte';
-
-test('unmount', async ({ page, mount }) => {
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await expect(page.locator('#root')).toContainText('Submit');
- await component.unmount();
- await expect(page.locator('#root')).not.toContainText('Submit');
-});
-
-test('unmount a multi root component', async ({ page, mount }) => {
- const component = await mount(MultiRoot);
- await expect(page.locator('#root')).toContainText('root 1');
- await expect(page.locator('#root')).toContainText('root 2');
- await component.unmount();
- await expect(page.locator('#root')).not.toContainText('root 1');
- await expect(page.locator('#root')).not.toContainText('root 2');
-});
-
-test('unmount twice throws an error', async ({ mount }) => {
- const component = await mount(Button, {
- props: {
- title: 'Submit',
- onsubmit: () => {},
- },
- });
- await component.unmount();
- await expect(component.unmount()).rejects.toThrowError('Component was not mounted');
-});
diff --git a/tests/components/ct-svelte/tests/update.spec.ts b/tests/components/ct-svelte/tests/update.spec.ts
deleted file mode 100644
index 96bfb37915958..0000000000000
--- a/tests/components/ct-svelte/tests/update.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { test, expect } from '@playwright/experimental-ct-svelte';
-import Counter from '@/components/Counter.svelte';
-
-test('update props without remounting', async ({ mount }) => {
- const component = await mount(Counter, {
- props: {
- count: 9001,
- onsubmit: () => {},
- },
- });
- await expect(component.getByTestId('props')).toContainText('9001');
-
- await component.update({
- props: {
- count: 1337,
- },
- });
- await expect(component).not.toContainText('9001');
- await expect(component.getByTestId('props')).toContainText('1337');
-
- await expect(component.getByTestId('remount-count')).toContainText('1');
-});
-
-test('update event listeners without remounting', async ({ mount }) => {
- const component = await mount(Counter);
-
- const messages: string[] = [];
- await component.update({
- props: {
- onsubmit: (data: string) => messages.push(data),
- }
- });
- await component.click();
- expect(messages).toEqual(['hello']);
-
- await expect(component.getByTestId('remount-count')).toContainText('1');
-});
diff --git a/tests/components/ct-svelte/tsconfig.json b/tests/components/ct-svelte/tsconfig.json
deleted file mode 100644
index 4ce7ec19bfd6f..0000000000000
--- a/tests/components/ct-svelte/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "module": "ESNext",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "skipLibCheck": true,
- "moduleResolution": "node",
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"],
- "*": ["_"],
- }
- }
-}
diff --git a/tests/mcp/cli-misc.spec.ts b/tests/mcp/cli-misc.spec.ts
index 1b20c49e4a0bc..96d43dbf78989 100644
--- a/tests/mcp/cli-misc.spec.ts
+++ b/tests/mcp/cli-misc.spec.ts
@@ -29,9 +29,8 @@ test('daemon shuts down on browser launch failure', async ({ cli, server }) => {
test('install-browser', async ({ cli, server, mcpBrowser }) => {
test.skip(mcpBrowser !== 'chromium', 'Test only chromium');
- await cli('open', server.HELLO_WORLD);
- const { output } = await cli('install-browser');
- expect(output).toContain(`Browser ${mcpBrowser} installed.`);
+ const { output } = await cli('install-browser', '--list');
+ expect(output).toMatch(/chromium-\d+/);
});
test('install workspace', async ({ cli }, testInfo) => {
diff --git a/tests/mcp/tabs.spec.ts b/tests/mcp/tabs.spec.ts
index cf10d0dca8389..69e386d91bfd4 100644
--- a/tests/mcp/tabs.spec.ts
+++ b/tests/mcp/tabs.spec.ts
@@ -74,6 +74,12 @@ test('create new tab', async ({ client }) => {
- generic [active] [ref=e1]: Body two
\`\`\``,
});
+ expect(await client.callTool({
+ name: 'browser_snapshot',
+ arguments: {},
+ })).toHaveResponse({
+ page: expect.stringContaining('Page URL: data:text/html,Tab twoBody two'),
+ });
});
test('select tab', async ({ client }) => {
diff --git a/tests/playwright-test/stable-test-runner/package-lock.json b/tests/playwright-test/stable-test-runner/package-lock.json
index c52da10fe0695..35be7eb1560a8 100644
--- a/tests/playwright-test/stable-test-runner/package-lock.json
+++ b/tests/playwright-test/stable-test-runner/package-lock.json
@@ -5,16 +5,16 @@
"packages": {
"": {
"dependencies": {
- "@playwright/test": "^1.59.0-alpha-2026-02-09"
+ "@playwright/test": "^1.59.0-alpha-2026-02-16"
}
},
"node_modules/@playwright/test": {
- "version": "1.59.0-alpha-2026-02-09",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.0-alpha-2026-02-09.tgz",
- "integrity": "sha512-3aZUIF61ddUnsiQhOZywYFVK4kpJjXxVGsPJZUBVjIrHsZT/LXxW9aG7fhRwyaMjpqAzmb2njJFdLj4XIrhf2A==",
+ "version": "1.59.0-alpha-2026-02-16",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.0-alpha-2026-02-16.tgz",
+ "integrity": "sha512-5Ra7AAWLTGDmZNWdyW47cbXtRxHteKZdf/xZDsGsxySB4DrNGJ6zS3Aw5UXt5Hn6/iYeO4y52dCNaLQMfif+wA==",
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.59.0-alpha-2026-02-09"
+ "playwright": "1.59.0-alpha-2026-02-16"
},
"bin": {
"playwright": "cli.js"
@@ -38,12 +38,12 @@
}
},
"node_modules/playwright": {
- "version": "1.59.0-alpha-2026-02-09",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.0-alpha-2026-02-09.tgz",
- "integrity": "sha512-yyOXu0vpIfNnBG6M0JkUDkxDyvZUDieqoXMxNoNbcVV+DROrJB1oDmkgTNojkxXhpsAHwG56TH2tE/Rqju86sA==",
+ "version": "1.59.0-alpha-2026-02-16",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.0-alpha-2026-02-16.tgz",
+ "integrity": "sha512-POKLwmkERahJOitYcaRz/LvVbME/dUxIBclBK7OtcuKBjdnvItmRpyFB6ODNAW8AAw1AFUgKRNFV3Bjbaajfuw==",
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.59.0-alpha-2026-02-09"
+ "playwright-core": "1.59.0-alpha-2026-02-16"
},
"bin": {
"playwright": "cli.js"
@@ -56,9 +56,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.59.0-alpha-2026-02-09",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.0-alpha-2026-02-09.tgz",
- "integrity": "sha512-O4Ugl6oq68hWeGIti4U3pNa/I7vEwn8PdzG/mZgcTkou+0IBNWAVH4WWk0+BJoufqaGBHmH0H7pVSjmlCusoYA==",
+ "version": "1.59.0-alpha-2026-02-16",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.0-alpha-2026-02-16.tgz",
+ "integrity": "sha512-+QJV/isy/bXD9UsHghHFo1iQJUYgmv/EC0oi6Vl86gP4zSuBHZo/D4YMS3lWPLZpEkEUnd6u5gpiMzd1SSzfcw==",
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
diff --git a/tests/playwright-test/stable-test-runner/package.json b/tests/playwright-test/stable-test-runner/package.json
index 7f14505e68ec4..f1a57d1f13e36 100644
--- a/tests/playwright-test/stable-test-runner/package.json
+++ b/tests/playwright-test/stable-test-runner/package.json
@@ -1,6 +1,6 @@
{
"private": true,
"dependencies": {
- "@playwright/test": "^1.59.0-alpha-2026-02-09"
+ "@playwright/test": "^1.59.0-alpha-2026-02-16"
}
}
diff --git a/utils/workspace.js b/utils/workspace.js
index 5331dc3335ef7..2f98fc2f3ecf5 100755
--- a/utils/workspace.js
+++ b/utils/workspace.js
@@ -209,11 +209,6 @@ const workspace = new Workspace(ROOT_PATH, [
path: path.join(ROOT_PATH, 'packages', 'playwright-ct-react17'),
files: ['LICENSE'],
}),
- new PWPackage({
- name: '@playwright/experimental-ct-svelte',
- path: path.join(ROOT_PATH, 'packages', 'playwright-ct-svelte'),
- files: ['LICENSE'],
- }),
new PWPackage({
name: '@playwright/experimental-ct-vue',
path: path.join(ROOT_PATH, 'packages', 'playwright-ct-vue'),