Skip to content
Draft
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
24 changes: 13 additions & 11 deletions src/setup/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ import {DirectOptions} from './directApi'

/**
* Default options applied when API is called per `userEvent.anyApi()`
* We use a function to make sure the document is always the instance
* of the time the API is called.
*/
const defaultOptionsDirect: Required<Options> = {
const getDefaultOptionsDirect = (): Required<Options> => ({
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could also do:

Suggested change
const getDefaultOptionsDirect = (): Required<Options> => ({
const getDefaultOptions = (overrides: Options): Required<Options> => ({

applyAccept: true,
autoModify: true,
delay: 0,
Expand All @@ -33,15 +35,15 @@ const defaultOptionsDirect: Required<Options> = {
skipHover: false,
writeToClipboard: false,
advanceTimers: () => Promise.resolve(),
}
})

/**
* Default options applied when API is called per `userEvent().anyApi()`
*/
const defaultOptionsSetup: Required<Options> = {
...defaultOptionsDirect,
const getDefaultOptionsSetup = (): Required<Options> => ({
...getDefaultOptionsDirect(),
writeToClipboard: true,
}
})

export type UserEventApi = typeof userEventApi

Expand All @@ -65,7 +67,7 @@ export type Config = Required<Options>

export function createConfig(
options: Options = {},
defaults: Required<Options> = defaultOptionsSetup,
defaults: Required<Options> = getDefaultOptionsSetup(),
node?: Node,
): Config {
const document = getDocument(options, node, defaults)
Expand Down Expand Up @@ -101,10 +103,10 @@ export function setupDirect(
keyboardState,
pointerState,
...options
}: DirectOptions & {keyboardState?: System, pointerState?: System} = {}, // backward-compatibility
}: DirectOptions & {keyboardState?: System; pointerState?: System} = {}, // backward-compatibility
node?: Node,
) {
const config = createConfig(options, defaultOptionsDirect, node)
const config = createConfig(options, getDefaultOptionsDirect(), node)
prepareDocument(config.document)
patchFocus(getWindow(config.document).HTMLElement)

Expand Down Expand Up @@ -146,9 +148,9 @@ export function createInstance(
config: Config,
system: System = new System(),
): {
instance: Instance
api: UserEvent
} {
instance: Instance
api: UserEvent
} {
const instance = {} as Instance
Object.assign(instance, {
config,
Expand Down