Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions packages/browser/src/client/tester/context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ export function createUserEvent(__tl_user_event_base__?: TestingLibraryUserEvent
setup() {
return createUserEvent()
},
async cleanup() {
cleanup() {
// avoid cleanup rpc call if there is nothing to cleanup
if (!keyboard.unreleased.length) {
return
return Promise.resolve()
}
return ensureAwaited(async (error) => {
await triggerCommand('__vitest_cleanup', [keyboard], error)
Expand Down Expand Up @@ -100,7 +100,7 @@ export function createUserEvent(__tl_user_event_base__?: TestingLibraryUserEvent
},

// testing-library user-event
async type(element, text, options) {
type(element, text, options) {
return ensureAwaited(async (error) => {
const selector = await convertToSelector(element, options)
const { unreleased } = await triggerCommand<{ unreleased: string[] }>(
Expand All @@ -118,7 +118,7 @@ export function createUserEvent(__tl_user_event_base__?: TestingLibraryUserEvent
tab(options = {}) {
return ensureAwaited(error => triggerCommand('__vitest_tab', [options], error))
},
async keyboard(text) {
keyboard(text) {
return ensureAwaited(async (error) => {
const { unreleased } = await triggerCommand<{ unreleased: string[] }>(
'__vitest_keyboard',
Expand All @@ -128,14 +128,14 @@ export function createUserEvent(__tl_user_event_base__?: TestingLibraryUserEvent
keyboard.unreleased = unreleased
})
},
async copy() {
await userEvent.keyboard(`{${modifier}>}{c}{/${modifier}}`)
copy() {
return userEvent.keyboard(`{${modifier}>}{c}{/${modifier}}`)
},
async cut() {
await userEvent.keyboard(`{${modifier}>}{x}{/${modifier}}`)
cut() {
return userEvent.keyboard(`{${modifier}>}{x}{/${modifier}}`)
},
async paste() {
await userEvent.keyboard(`{${modifier}>}{v}{/${modifier}}`)
paste() {
return userEvent.keyboard(`{${modifier}>}{v}{/${modifier}}`)
},
}
return userEvent
Expand Down
2 changes: 1 addition & 1 deletion packages/browser/src/client/tester/locators/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ export abstract class Locator {
return this.triggerCommand<void>('__vitest_fill', this.selector, text, options)
}

public async upload(files: string | string[] | File | File[], options?: UserEventUploadOptions): Promise<void> {
public upload(files: string | string[] | File | File[], options?: UserEventUploadOptions): Promise<void> {
return ensureAwaited(async (error) => {
const filesPromise = (Array.isArray(files) ? files : [files]).map(async (file) => {
if (typeof file === 'string') {
Expand Down
16 changes: 15 additions & 1 deletion test/browser/fixtures/failing/failing.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { page } from 'vitest/browser'
import { page, userEvent } from 'vitest/browser'
import { index } from '@vitest/bundled-lib'
import { expect, it } from 'vitest'
import { throwError } from './src/error'
Expand All @@ -19,6 +19,20 @@ it('several locator methods are not awaited', () => {
page.getByRole('button').dblClick()
page.getByRole('button').click()
page.getByRole('button').tripleClick()
userEvent.type(page.getByRole('textbox'), '123')
userEvent.keyboard('123')
userEvent.copy()
userEvent.cut()
userEvent.paste()
userEvent.tab()
userEvent.dragAndDrop(page.getByRole('button'), page.getByRole('button'))
userEvent.fill(page.getByRole('textbox'), '123')
userEvent.upload(page.getByRole('textbox'), './file.js')
userEvent.unhover(page.getByRole('button'))
userEvent.hover(page.getByRole('button'))
userEvent.clear(page.getByRole('button'))
userEvent.selectOptions(page.getByRole('button'), '123')
userEvent.wheel(page.getByRole('button'), { direction: 'down' })
})

it('correctly prints error from a bundled file', () => {
Expand Down
18 changes: 16 additions & 2 deletions test/browser/specs/runner.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ error with a stack
})

test(`stack trace points to correct file in every browser when failed`, async () => {
expect.assertions(15)
expect.assertions(29)
const { stderr } = await runBrowserTests({
root: './fixtures/failing',
reporters: [
Expand Down Expand Up @@ -252,12 +252,26 @@ test(`stack trace points to correct file in every browser when failed`, async ()
expect(stderr).toMatch(/failing.test.ts:19:(27|36)/)
expect(stderr).toMatch(/failing.test.ts:20:(27|33)/)
expect(stderr).toMatch(/failing.test.ts:21:(27|39)/)
expect(stderr).toMatch(/failing.test.ts:22:(12|17)/)
expect(stderr).toMatch(/failing.test.ts:23:(12|21)/)
expect(stderr).toMatch(/failing.test.ts:24:(12|17)/)
expect(stderr).toMatch(/failing.test.ts:25:(12|16)/)
expect(stderr).toMatch(/failing.test.ts:26:(12|18)/)
expect(stderr).toMatch(/failing.test.ts:27:(12|16)/)
expect(stderr).toMatch(/failing.test.ts:28:(12|24)/)
expect(stderr).toMatch(/failing.test.ts:29:(12|17)/)
expect(stderr).toMatch(/failing.test.ts:30:(12|19)/)
expect(stderr).toMatch(/failing.test.ts:31:(12|20)/)
expect(stderr).toMatch(/failing.test.ts:32:(12|18)/)
expect(stderr).toMatch(/failing.test.ts:33:(12|18)/)
expect(stderr).toMatch(/failing.test.ts:34:(12|26)/)
expect(stderr).toMatch(/failing.test.ts:35:(12|18)/)

expect(stderr).toMatch(/bundled-lib\/src\/b.js:2:(9|19)/)
expect(stderr).toMatch(/bundled-lib\/src\/index.js:5:(16|18)/)

// index() is called from a bundled file
expect(stderr).toMatch(/failing.test.ts:25:(2|8)/)
expect(stderr).toMatch(/failing.test.ts:39:(2|8)/)
})

test('user-event', async () => {
Expand Down
Loading