|
1 | 1 | /* eslint-disable no-eval */
|
2 | 2 | /* eslint-disable no-new-func */
|
3 |
| -import fs from 'fs' |
4 |
| -import path from 'path' |
5 | 3 | import { ClientFunction, Selector } from 'testcafe'
|
6 | 4 | import { queries } from '@testing-library/dom'
|
7 | 5 |
|
8 |
| -const DOM_TESTING_LIBRARY_UMD_PATH = path.join( |
9 |
| - require.resolve( '@testing-library/dom' ), |
10 |
| - '../../', |
11 |
| - 'dist/@testing-library/dom.umd.js', |
12 |
| -) |
13 |
| -const DOM_TESTING_LIBRARY_UMD = fs.readFileSync(DOM_TESTING_LIBRARY_UMD_PATH).toString() |
14 | 6 |
|
15 | 7 |
|
| 8 | +export async function configureOnce(options) { |
| 9 | + const { content } = configure(options); |
16 | 10 |
|
| 11 | + await new ClientFunction(new Function(content))(); |
| 12 | +} |
| 13 | + |
| 14 | +export function configure(options) { |
17 | 15 |
|
18 |
| -export async function configure(options, t) { |
19 | 16 | const configFunction =
|
20 | 17 | `
|
21 | 18 | window.TestingLibraryDom.configure(${JSON.stringify(options)});
|
22 | 19 | `;
|
23 |
| - await new ClientFunction(new Function(configFunction))(); |
24 |
| - |
25 |
| - if (t) { |
26 |
| - t.testRun.injectable.scripts.push('/testcafe-testing-library-config.js'); |
27 |
| - t.testRun.session.proxy.GET('/testcafe-testing-library-config.js', { content: configFunction, contentType: 'application/x-javascript' }) |
28 |
| - } |
29 |
| - |
30 |
| -} |
31 |
| - |
32 |
| -export async function addTestcafeTestingLibrary(t) { |
33 |
| - // inject for 1st pageload. Then just use injectables for subsequent page loads. |
34 |
| - // eslint-disable-next-line |
35 |
| - const inject = ClientFunction( |
36 |
| - () => { |
37 |
| - // eslint-disable-next-line no-undef |
38 |
| - window.eval(script) |
39 |
| - }, |
40 |
| - { |
41 |
| - dependencies: { script: DOM_TESTING_LIBRARY_UMD }, |
42 |
| - }, |
43 |
| - ) |
44 |
| - |
45 |
| - await inject.with({ boundTestRun: t })(); |
46 |
| - |
47 |
| - //and for subsequent pageloads: |
48 |
| - t.testRun.injectable.scripts.push('/dom-testing-library.js'); |
49 |
| - t.testRun.session.proxy.GET('/dom-testing-library.js', { content: DOM_TESTING_LIBRARY_UMD, contentType: 'application/x-javascript' }) |
50 |
| - |
51 |
| - if (addTestcafeTestingLibrary.options) { |
52 |
| - await configure(addTestcafeTestingLibrary.options, t); |
53 |
| - } |
54 |
| - |
| 20 | + return { content: configFunction }; |
55 | 21 | }
|
56 | 22 |
|
57 |
| -// eslint-disable-next-line no-shadow |
58 |
| -addTestcafeTestingLibrary.configure = function configure(options) { |
59 |
| - addTestcafeTestingLibrary.options = { ...options }; |
60 |
| - return addTestcafeTestingLibrary; |
61 |
| -} |
62 | 23 |
|
63 | 24 | Object.keys(queries).forEach(queryName => {
|
64 | 25 | module.exports[queryName] = Selector(
|
|
0 commit comments