<% const harnessImport = answers.installTestingLibrary ? `import { render, fireEvent } from '@testing-library/vue'` : `import { createApp } from 'vue'` const renderCommand = answers.installTestingLibrary ? `render(ExampleComponent, { props: { msg: 'WebdriverIO Component Testing' } })` : `createApp(ExampleComponent, { msg: 'WebdriverIO Component Testing' }).mount(container)` %> import { $, expect } from '@wdio/globals' <%- harnessImport %> <% if (answers.installTestingLibrary) { %> import * as matchers from '@testing-library/jest-dom/matchers' expect.extend(matchers) <% } %> import ExampleComponent from './Component.vue' import './Component.css' describe('Vue Component Testing', () => { <% if (answers.installTestingLibrary) { %> it('should test component with Testing Library', async () => { // The render method returns a collection of utilities to query your component. const { getByText } = render(ExampleComponent, { props: { msg: 'WebdriverIO Component Testing' } }) const component = getByText(/count is 0/i) expect(component).toBeInTheDocument() await fireEvent.click(component) await fireEvent.click(component) expect(getByText(/count is 2/i)).toBeInTheDocument() }) <% } else { %> let container<%- answers.isUsingTypeScript ? `: Element` : '' %> beforeEach(() => { container = document.createElement('div') container.setAttribute('id', 'app') document.body.appendChild(container) }) afterEach(() => { container?.remove() }) <% } %> it('should test component with WebdriverIO', async () => { <%- renderCommand %> const component = await $('button*=count is') await expect(component).toBePresent() await expect(component).toHaveText('count is 0') await component.click() await component.click() await expect(component).toHaveText('count is 2')<%- answers.includeVisualTesting ? ` await expect(component).toMatchElementSnapshot('counterButton')` : '' %> }) })