diff --git a/docs/src/test-components-js.md b/docs/src/test-components-js.md index 91d1860a26..e4f19d6fc2 100644 --- a/docs/src/test-components-js.md +++ b/docs/src/test-components-js.md @@ -521,7 +521,6 @@ You can use `beforeMount` and `afterMount` hooks to configure your app. This let {label: 'React', value: 'react'}, {label: 'Solid', value: 'solid'}, {label: 'Vue3', value: 'vue3'}, - {label: 'Vue2', value: 'vue2'}, ] }> @@ -617,40 +616,6 @@ You can use `beforeMount` and `afterMount` hooks to configure your app. This let - - - ```js title="playwright/index.ts" - import { beforeMount, afterMount } from '@playwright/experimental-ct-vue2/hooks'; - import Router from 'vue-router'; - import { router } from '../src/router'; - - export type HooksConfig = { - enableRouting?: boolean; - } - - beforeMount(async ({ app, hooksConfig }) => { - if (hooksConfig?.enableRouting) { - Vue.use(Router); - return { router } - } - }); - ``` - - ```js title="src/pages/ProductsPage.spec.ts" - import { test, expect } from '@playwright/experimental-ct-vue2'; - import type { HooksConfig } from '../playwright'; - import ProductsPage from './pages/ProductsPage.vue'; - - test('configure routing through hooks config', async ({ page, mount }) => { - const component = await mount(ProductsPage, { - hooksConfig: { enableRouting: true }, - }); - await expect(component.getByRole('link')).toHaveAttribute('href', '/products/42'); - }); - ``` - - - ### unmount diff --git a/package-lock.json b/package-lock.json index 57046ec2f8..3f503e4c09 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1508,10 +1508,6 @@ "resolved": "packages/playwright-ct-vue", "link": true }, - "node_modules/@playwright/experimental-ct-vue2": { - "resolved": "packages/playwright-ct-vue2", - "link": true - }, "node_modules/@playwright/test": { "resolved": "packages/playwright-test", "link": true @@ -5964,21 +5960,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -6593,14 +6574,6 @@ "solid-js": "^1.3" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -8097,59 +8070,6 @@ "node": ">=18" } }, - "packages/playwright-ct-vue2": { - "name": "@playwright/experimental-ct-vue2", - "version": "1.49.0-next", - "license": "Apache-2.0", - "dependencies": { - "@playwright/experimental-ct-core": "1.49.0-next", - "@vitejs/plugin-vue2": "^2.2.0" - }, - "bin": { - "playwright": "cli.js" - }, - "devDependencies": { - "vue": "^2.7.14" - }, - "engines": { - "node": ">=18" - } - }, - "packages/playwright-ct-vue2/node_modules/@vitejs/plugin-vue2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.1.tgz", - "integrity": "sha512-/ksaaz2SRLN11JQhLdEUhDzOn909WEk99q9t9w+N12GjQCljzv7GyvAbD/p20aBUjHkvpGOoQ+FCOkG+mjDF4A==", - "engines": { - "node": "^14.18.0 || >= 16.0.0" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0", - "vue": "^2.7.0-0" - } - }, - "packages/playwright-ct-vue2/node_modules/@vue/compiler-sfc": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", - "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", - "dependencies": { - "@babel/parser": "^7.23.5", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" - } - }, - "packages/playwright-ct-vue2/node_modules/vue": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", - "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", - "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", - "dependencies": { - "@vue/compiler-sfc": "2.7.16", - "csstype": "^3.1.0" - } - }, "packages/playwright-firefox": { "version": "1.49.0-next", "hasInstallScript": true, diff --git a/packages/playwright-ct-vue2/.npmignore b/packages/playwright-ct-vue2/.npmignore deleted file mode 100644 index 62701eb493..0000000000 --- a/packages/playwright-ct-vue2/.npmignore +++ /dev/null @@ -1,12 +0,0 @@ -**/* - -!README.md -!LICENSE -!cli.js -!register.d.ts -!register.mjs -!registerSource.mjs -!index.d.ts -!index.js -!hooks.d.ts -!hooks.mjs diff --git a/packages/playwright-ct-vue2/README.md b/packages/playwright-ct-vue2/README.md deleted file mode 100644 index 23ae82312d..0000000000 --- a/packages/playwright-ct-vue2/README.md +++ /dev/null @@ -1,3 +0,0 @@ -> **BEWARE** This package is EXPERIMENTAL and does not respect semver. - -Read more at https://playwright.dev/docs/test-components diff --git a/packages/playwright-ct-vue2/cli.js b/packages/playwright-ct-vue2/cli.js deleted file mode 100755 index 9cc834ee95..0000000000 --- a/packages/playwright-ct-vue2/cli.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -/** - * 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. - */ - -const { program } = require('@playwright/experimental-ct-core/lib/program'); - -program.parse(process.argv); diff --git a/packages/playwright-ct-vue2/hooks.d.ts b/packages/playwright-ct-vue2/hooks.d.ts deleted file mode 100644 index 5009f44348..0000000000 --- a/packages/playwright-ct-vue2/hooks.d.ts +++ /dev/null @@ -1,37 +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 type { ComponentOptions } from 'vue'; -import type { CombinedVueInstance, Vue, VueConstructor } from 'vue/types/vue'; - -export declare function beforeMount( - callback: (params: { - hooksConfig?: HooksConfig, - Vue: VueConstructor, - }) => Promise & Record> -): void; -export declare function afterMount( - callback: (params: { - hooksConfig?: HooksConfig; - instance: CombinedVueInstance< - Vue, - object, - object, - object, - Record - >; - }) => Promise -): void; diff --git a/packages/playwright-ct-vue2/hooks.mjs b/packages/playwright-ct-vue2/hooks.mjs deleted file mode 100644 index b7cea242c4..0000000000 --- a/packages/playwright-ct-vue2/hooks.mjs +++ /dev/null @@ -1,29 +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. - */ - -const __pw_hooks_before_mount = []; -const __pw_hooks_after_mount = []; - -window.__pw_hooks_before_mount = __pw_hooks_before_mount; -window.__pw_hooks_after_mount = __pw_hooks_after_mount; - -export const beforeMount = callback => { - __pw_hooks_before_mount.push(callback); -}; - -export const afterMount = callback => { - __pw_hooks_after_mount.push(callback); -}; diff --git a/packages/playwright-ct-vue2/index.d.ts b/packages/playwright-ct-vue2/index.d.ts deleted file mode 100644 index 133b4a60f2..0000000000 --- a/packages/playwright-ct-vue2/index.d.ts +++ /dev/null @@ -1,66 +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 type { TestType, Locator } from '@playwright/experimental-ct-core'; - -type Slot = string | string[]; -type ComponentSlots = Record & { default?: Slot }; - -type ComponentEvents = Record; - -// Copied from: https://github.com/vuejs/language-tools/blob/master/packages/vue-component-type-helpers/index.d.ts#L10-L13 -type ComponentProps = - T extends new (...angs: any) => { $props: infer P; } ? NonNullable

: - T extends (props: infer P, ...args: any) => any ? P : - {}; - -export interface MountOptions { - props?: ComponentProps; - slots?: ComponentSlots; - on?: ComponentEvents; - hooksConfig?: HooksConfig; -} - -export interface MountOptionsJsx { - hooksConfig?: HooksConfig; -} - -export interface MountResult extends Locator { - unmount(): Promise; - update(options: { - props?: Partial>; - slots?: Partial; - on?: Partial; - }): Promise; -} - -export interface MountResultJsx extends Locator { - unmount(): Promise; - update(component: JSX.Element): Promise; -} - -export const test: TestType<{ - mount( - component: JSX.Element, - options?: MountOptionsJsx - ): Promise; - mount( - component: Component, - options?: MountOptions - ): Promise>; -}>; - -export { defineConfig, PlaywrightTestConfig, expect, devices } from '@playwright/experimental-ct-core'; diff --git a/packages/playwright-ct-vue2/index.js b/packages/playwright-ct-vue2/index.js deleted file mode 100644 index 2eeabb0d08..0000000000 --- a/packages/playwright-ct-vue2/index.js +++ /dev/null @@ -1,33 +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. - */ - -const { test, expect, devices, defineConfig: originalDefineConfig } = require('@playwright/experimental-ct-core'); -const path = require('path'); - -const defineConfig = (config, ...configs) => { - return originalDefineConfig({ - ...config, - '@playwright/test': { - packageJSON: require.resolve('./package.json'), - }, - '@playwright/experimental-ct-core': { - registerSourceFile: path.join(__dirname, 'registerSource.mjs'), - frameworkPluginFactory: () => import('@vitejs/plugin-vue2').then(plugin => plugin.default()), - }, - }, ...configs); -}; - -module.exports = { test, expect, devices, defineConfig }; diff --git a/packages/playwright-ct-vue2/package.json b/packages/playwright-ct-vue2/package.json deleted file mode 100644 index 9ec30191ad..0000000000 --- a/packages/playwright-ct-vue2/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@playwright/experimental-ct-vue2", - "version": "1.49.0-next", - "description": "Playwright Component Testing for Vue2", - "repository": { - "type": "git", - "url": "git+https://github.com/microsoft/playwright.git" - }, - "homepage": "https://playwright.dev", - "engines": { - "node": ">=18" - }, - "author": { - "name": "Microsoft Corporation" - }, - "license": "Apache-2.0", - "exports": { - ".": { - "types": "./index.d.ts", - "default": "./index.js" - }, - "./register": { - "types": "./register.d.ts", - "default": "./register.mjs" - }, - "./hooks": { - "types": "./hooks.d.ts", - "default": "./hooks.mjs" - }, - "./package.json": "./package.json" - }, - "dependencies": { - "@playwright/experimental-ct-core": "1.49.0-next", - "@vitejs/plugin-vue2": "^2.2.0" - }, - "devDependencies": { - "vue": "^2.7.14" - }, - "bin": { - "playwright": "cli.js" - } -} diff --git a/packages/playwright-ct-vue2/register.d.ts b/packages/playwright-ct-vue2/register.d.ts deleted file mode 100644 index f88e9be59d..0000000000 --- a/packages/playwright-ct-vue2/register.d.ts +++ /dev/null @@ -1,24 +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. - */ - -export default function pwRegister( - components: Record, - options?: { - createApp: any, - setDevtoolsHook: any, - h: any, - } -): void; diff --git a/packages/playwright-ct-vue2/register.mjs b/packages/playwright-ct-vue2/register.mjs deleted file mode 100644 index ca6a6a12d9..0000000000 --- a/packages/playwright-ct-vue2/register.mjs +++ /dev/null @@ -1,21 +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 { pwRegister } from './registerSource.mjs'; - -export default components => { - pwRegister(components); -}; diff --git a/packages/playwright-ct-vue2/registerSource.mjs b/packages/playwright-ct-vue2/registerSource.mjs deleted file mode 100644 index 19b4d41c08..0000000000 --- a/packages/playwright-ct-vue2/registerSource.mjs +++ /dev/null @@ -1,212 +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. - */ - -// @ts-check - -// This file is injected into the registry as text, no dependencies are allowed. - -import __pwVue, { h as __pwH } from 'vue'; - -/** @typedef {import('../playwright-ct-core/types/component').Component} Component */ -/** @typedef {import('../playwright-ct-core/types/component').JsxComponent} JsxComponent */ -/** @typedef {import('../playwright-ct-core/types/component').ObjectComponent} ObjectComponent */ -/** @typedef {import('vue').Component} FrameworkComponent */ - -/** - * @param {any} component - * @returns {component is ObjectComponent} - */ -function isObjectComponent(component) { - return typeof component === 'object' && component && component.__pw_type === 'object-component'; -} - -/** - * @param {any} component - * @returns {component is JsxComponent} - */ -function isJsxComponent(component) { - return typeof component === 'object' && component && component.__pw_type === 'jsx'; -} - -/** - * @param {any} child - */ -function __pwCreateChild(child) { - if (Array.isArray(child)) - return child.map(grandChild => __pwCreateChild(grandChild)); - if (isJsxComponent(child) || isObjectComponent(child)) - return __pwCreateWrapper(child); - return child; -} - -/** - * Exists to support fallthrough attributes: - * https://vuejs.org/guide/components/attrs.html#fallthrough-attributes - * @param {any} Component - * @param {string} key - * @return {boolean} - */ -function __pwComponentHasKeyInProps(Component, key) { - return typeof Component.props === 'object' && Component.props && key in Component.props; -} - -/** - * @param {JsxComponent} component - * @returns {any[] | undefined} - */ -function __pwJsxChildArray(component) { - if (!component.props.children) - return; - if (Array.isArray(component.props.children)) - return component.props.children; - return [component.props.children]; -} - -/** - * @param {Component} component - */ -function __pwCreateComponent(component) { - const isVueComponent = typeof component.type !== 'string'; - - /** - * @type {(import('vue').VNode | string)[]} - */ - const children = []; - - /** @type {import('vue').VNodeData} */ - const nodeData = {}; - nodeData.attrs = {}; - nodeData.props = {}; - nodeData.scopedSlots = {}; - nodeData.on = {}; - - if (component.__pw_type === 'jsx') { - for (const child of __pwJsxChildArray(component) || []) { - if (isJsxComponent(child) && child.type === 'template') { - const slotProperty = Object.keys(child.props).find(k => k.startsWith('v-slot:')); - const slot = slotProperty ? slotProperty.substring('v-slot:'.length) : 'default'; - nodeData.scopedSlots[slot] = () => __pwJsxChildArray(child)?.map(c => __pwCreateChild(c)); - } else { - children.push(__pwCreateChild(child)); - } - } - - for (const [key, value] of Object.entries(component.props)) { - if (key.startsWith('v-on:')) { - const event = key.substring('v-on:'.length); - nodeData.on[event] = value; - } else { - if (isVueComponent && __pwComponentHasKeyInProps(component.type, key)) - nodeData.props[key] = value; - else - nodeData.attrs[key] = value; - } - } - } - - if (component.__pw_type === 'object-component') { - // Vue test util syntax. - for (const [key, value] of Object.entries(component.slots || {})) { - const list = (Array.isArray(value) ? value : [value]).map(v => __pwCreateChild(v)); - if (key === 'default') - children.push(...list); - else - nodeData.scopedSlots[key] = () => list; - } - nodeData.props = component.props || {}; - for (const [key, value] of Object.entries(component.on || {})) - nodeData.on[key] = value; - } - - /** @type {(string|import('vue').VNode)[] | undefined} */ - let lastArg; - if (Object.entries(nodeData.scopedSlots).length) { - if (children.length) - nodeData.scopedSlots.default = () => children; - } else if (children.length) { - lastArg = children; - } - - return { Component: component.type, nodeData, slots: lastArg }; -} - -/** - * @param {Component} component - * @returns {import('vue').VNode} - */ -function __pwCreateWrapper(component) { - const { Component, nodeData, slots } = __pwCreateComponent(component); - const wrapper = __pwH(Component, nodeData, slots); - return wrapper; -} - -const instanceKey = Symbol('instanceKey'); -const wrapperKey = Symbol('wrapperKey'); - -window.playwrightMount = async (component, rootElement, hooksConfig) => { - let options = {}; - for (const hook of window.__pw_hooks_before_mount || []) - options = await hook({ hooksConfig, Vue: __pwVue }); - - const instance = new __pwVue({ - ...options, - render: () => { - const wrapper = __pwCreateWrapper(component); - /** @type {any} */ (rootElement)[wrapperKey] = wrapper; - return wrapper; - }, - }).$mount(); - rootElement.appendChild(instance.$el); - /** @type {any} */ (rootElement)[instanceKey] = instance; - - for (const hook of window.__pw_hooks_after_mount || []) - await hook({ hooksConfig, instance }); -}; - -window.playwrightUnmount = async rootElement => { - const component = rootElement[instanceKey]; - if (!component) - throw new Error('Component was not mounted'); - component.$destroy(); - component.$el.remove(); - delete rootElement[instanceKey]; -}; - -window.playwrightUpdate = async (element, options) => { - const wrapper = /** @type {any} */(element)[wrapperKey]; - if (!wrapper) - throw new Error('Component was not mounted'); - - const component = wrapper.componentInstance; - if (!component) - throw new Error('Updating a native HTML element is not supported'); - - const { nodeData, slots } = __pwCreateComponent(options); - - for (const [name, value] of Object.entries(nodeData.on || {})) { - component.$on(name, value); - component.$listeners[name] = value; - } - - Object.assign(component.$scopedSlots, nodeData.scopedSlots); - component.$slots.default = slots; - - for (const [key, value] of Object.entries(nodeData.props || {})) - component[key] = value; - - if (!Object.keys(nodeData.props || {}).length) - component.$forceUpdate(); -}; diff --git a/tests/components/ct-vue2-cli/.gitignore b/tests/components/ct-vue2-cli/.gitignore deleted file mode 100644 index 7e2a946d8e..0000000000 --- a/tests/components/ct-vue2-cli/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -.DS_Store -node_modules -/dist -*.tsbuildinfo - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/tests/components/ct-vue2-cli/README.md b/tests/components/ct-vue2-cli/README.md deleted file mode 100644 index c9a7da714e..0000000000 --- a/tests/components/ct-vue2-cli/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# ct-vue2-cli - -## Project setup -``` -npm install -``` - -### Compiles and hot-reloads for development -``` -npm run serve -``` - -### Compiles and minifies for production -``` -npm run build -``` - -### Lints and fixes files -``` -npm run lint -``` - -### Customize configuration -See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/tests/components/ct-vue2-cli/babel.config.js b/tests/components/ct-vue2-cli/babel.config.js deleted file mode 100644 index e9558405fd..0000000000 --- a/tests/components/ct-vue2-cli/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} diff --git a/tests/components/ct-vue2-cli/package.json b/tests/components/ct-vue2-cli/package.json deleted file mode 100644 index 472d30f92b..0000000000 --- a/tests/components/ct-vue2-cli/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "ct-vue2-cli", - "version": "0.1.0", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint", - "typecheck": "tsc --noEmit --project tsconfig.test.json" - }, - "dependencies": { - "core-js": "^3.8.3", - "vue": "^2.7.13", - "vue-router": "^3.6.5" - }, - "devDependencies": { - "@babel/core": "^7.23.2", - "@babel/eslint-parser": "^7.22.15", - "@vue/cli-plugin-babel": "~5.0.0", - "@vue/cli-plugin-eslint": "~5.0.0", - "@vue/cli-service": "~5.0.0", - "@vue/tsconfig": "^0.1.3", - "eslint": "^7.32.0", - "eslint-plugin-vue": "^8.0.3" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "plugin:vue/essential", - "eslint:recommended" - ], - "parserOptions": { - "parser": "@babel/eslint-parser" - }, - "rules": {} - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead" - ] -} diff --git a/tests/components/ct-vue2-cli/playwright.config.ts b/tests/components/ct-vue2-cli/playwright.config.ts deleted file mode 100644 index 307bc9726d..0000000000 --- a/tests/components/ct-vue2-cli/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-vue2'; -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-vue2-cli/playwright/index.html b/tests/components/ct-vue2-cli/playwright/index.html deleted file mode 100644 index 9ee6c8206e..0000000000 --- a/tests/components/ct-vue2-cli/playwright/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - -

- - - diff --git a/tests/components/ct-vue2-cli/playwright/index.js b/tests/components/ct-vue2-cli/playwright/index.js deleted file mode 100644 index f5bd21d70d..0000000000 --- a/tests/components/ct-vue2-cli/playwright/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import { beforeMount, afterMount } from '@playwright/experimental-ct-vue2/hooks'; -import Router from 'vue-router'; -import { router } from '../src/router'; -import '../src/assets/index.css'; - -beforeMount(async ({ Vue, hooksConfig }) => { - console.log(`Before mount: ${JSON.stringify(hooksConfig)}`); - - if (hooksConfig?.routing) { - Vue.use(Router); - return { router } - } -}); - -afterMount(async ({ instance }) => { - console.log(`After mount el: ${instance.$el.constructor.name}`); -}); diff --git a/tests/components/ct-vue2-cli/public/favicon.ico b/tests/components/ct-vue2-cli/public/favicon.ico deleted file mode 100644 index df36fcfb72..0000000000 Binary files a/tests/components/ct-vue2-cli/public/favicon.ico and /dev/null differ diff --git a/tests/components/ct-vue2-cli/public/index.html b/tests/components/ct-vue2-cli/public/index.html deleted file mode 100644 index 3e5a139621..0000000000 --- a/tests/components/ct-vue2-cli/public/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - <%= htmlWebpackPlugin.options.title %> - - - -
- - - diff --git a/tests/components/ct-vue2-cli/src/App.vue b/tests/components/ct-vue2-cli/src/App.vue deleted file mode 100644 index c2209eb5d7..0000000000 --- a/tests/components/ct-vue2-cli/src/App.vue +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/tests/components/ct-vue2-cli/src/assets/index.css b/tests/components/ct-vue2-cli/src/assets/index.css deleted file mode 100644 index 97495c44b8..0000000000 --- a/tests/components/ct-vue2-cli/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-vue2-cli/src/assets/logo.png b/tests/components/ct-vue2-cli/src/assets/logo.png deleted file mode 100644 index f3d2503fc2..0000000000 Binary files a/tests/components/ct-vue2-cli/src/assets/logo.png and /dev/null differ diff --git a/tests/components/ct-vue2-cli/src/components/Button.vue b/tests/components/ct-vue2-cli/src/components/Button.vue deleted file mode 100644 index 8bf2f3b71b..0000000000 --- a/tests/components/ct-vue2-cli/src/components/Button.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/tests/components/ct-vue2-cli/src/components/Component.vue b/tests/components/ct-vue2-cli/src/components/Component.vue deleted file mode 100644 index 133c8e2670..0000000000 --- a/tests/components/ct-vue2-cli/src/components/Component.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/tests/components/ct-vue2-cli/src/components/Counter.vue b/tests/components/ct-vue2-cli/src/components/Counter.vue deleted file mode 100644 index a048a43535..0000000000 --- a/tests/components/ct-vue2-cli/src/components/Counter.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/tests/components/ct-vue2-cli/src/components/DefaultSlot.vue b/tests/components/ct-vue2-cli/src/components/DefaultSlot.vue deleted file mode 100644 index 287b84beaf..0000000000 --- a/tests/components/ct-vue2-cli/src/components/DefaultSlot.vue +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/tests/components/ct-vue2-cli/src/components/EmptyTemplate.vue b/tests/components/ct-vue2-cli/src/components/EmptyTemplate.vue deleted file mode 100644 index 9b4c59695e..0000000000 --- a/tests/components/ct-vue2-cli/src/components/EmptyTemplate.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/tests/components/ct-vue2-cli/src/components/NamedSlots.vue b/tests/components/ct-vue2-cli/src/components/NamedSlots.vue deleted file mode 100644 index 582608df32..0000000000 --- a/tests/components/ct-vue2-cli/src/components/NamedSlots.vue +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/tests/components/ct-vue2-cli/src/main.js b/tests/components/ct-vue2-cli/src/main.js deleted file mode 100644 index b92d6e3e04..0000000000 --- a/tests/components/ct-vue2-cli/src/main.js +++ /dev/null @@ -1,14 +0,0 @@ -import Vue from 'vue'; -import Router from 'vue-router'; -import App from './App.vue'; -import { router } from './router'; -import './assets/index.css'; - -Vue.config.productionTip = false; - -Vue.use(Router); - -new Vue({ - router, - render: h => h(App), -}).$mount('#app'); diff --git a/tests/components/ct-vue2-cli/src/pages/DashboardPage.vue b/tests/components/ct-vue2-cli/src/pages/DashboardPage.vue deleted file mode 100644 index 0dcf8cc990..0000000000 --- a/tests/components/ct-vue2-cli/src/pages/DashboardPage.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/tests/components/ct-vue2-cli/src/pages/LoginPage.vue b/tests/components/ct-vue2-cli/src/pages/LoginPage.vue deleted file mode 100644 index aaa18be8ab..0000000000 --- a/tests/components/ct-vue2-cli/src/pages/LoginPage.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/tests/components/ct-vue2-cli/src/router/index.js b/tests/components/ct-vue2-cli/src/router/index.js deleted file mode 100644 index 3e5680ca8e..0000000000 --- a/tests/components/ct-vue2-cli/src/router/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import Router from 'vue-router'; -import LoginPage from '../pages/LoginPage.vue'; -import DashboardPage from '../pages/DashboardPage.vue'; - -export const router = new Router({ - mode: 'history', - base: '/', - routes: [ - { path: '/', component: LoginPage }, - { path: '/dashboard', component: DashboardPage } - ] -}); diff --git a/tests/components/ct-vue2-cli/src/shims-vue.d.ts b/tests/components/ct-vue2-cli/src/shims-vue.d.ts deleted file mode 100644 index 8f6f410263..0000000000 --- a/tests/components/ct-vue2-cli/src/shims-vue.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.vue' { - import Vue from 'vue'; - export default Vue; -} diff --git a/tests/components/ct-vue2-cli/tests/events/events.spec.ts b/tests/components/ct-vue2-cli/tests/events/events.spec.ts deleted file mode 100644 index 71c4c958a9..0000000000 --- a/tests/components/ct-vue2-cli/tests/events/events.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from '@playwright/experimental-ct-vue2'; -import Button from '@/components/Button.vue'; - -test('emit an submit event when the button is clicked', async ({ mount }) => { - const messages: string[] = []; - const component = await mount(Button, { - props: { - title: 'Submit', - }, - on: { - submit: (data: string) => messages.push(data), - }, - }); - await component.click(); - expect(messages).toEqual(['hello']); -}); diff --git a/tests/components/ct-vue2-cli/tests/events/events.spec.tsx b/tests/components/ct-vue2-cli/tests/events/events.spec.tsx deleted file mode 100644 index 9d31d708fb..0000000000 --- a/tests/components/ct-vue2-cli/tests/events/events.spec.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { test, expect } from '@playwright/experimental-ct-vue2'; -import Button from '@/components/Button.vue'; -import DefaultSlot from '@/components/DefaultSlot.vue'; - -test('emit an submit event when the button is clicked', async ({ mount }) => { - const messages: string[] = []; - const component = await mount( -