Где скрипты в injectScripts внедряются в тестах TestCafé? - PullRequest
2 голосов
/ 19 сентября 2019

Я настраиваю тесты TestCafé программно и использую конфигурацию injectScripts в классе Runner для ввода функций.Согласно документации эти скрипты добавляются в заголовок тестируемой страницы.Можно ли вызвать функции из самого теста?Я не нашел способ сделать это.Я вижу, что карта сценариев доступна внутри теста, и я могу выйти из системы, выполнив

console.log(t.testRun.opts.clientScripts)

Но было бы крайне уродливо анализировать эту карту и оценивать сценарии ... Как я могу, или я могу быть точным, чтобы вызвать введенную функцию из теста?

1 Ответ

2 голосов
/ 20 сентября 2019

Вы можете использовать API ClientFunction или eval для обращения к внедренным сценариям или любому другому клиентскому сценарию из теста.Пожалуйста, взгляните на следующий пример:

const scriptContent = `
function alertHelloWorld () {
    alert('Hello world!');
}`;

fixture `My fixture`
    .page `https://example.com`
    .clientScripts({ content: scriptContent });

test('New Test', async t => {
    await t.setNativeDialogHandler(() => true);

    await t.eval(() => alertHelloWorld());

    const history = await t.getNativeDialogHistory();

    await t
        .expect(history[0].type).eql('alert')
        .expect(history[0].text).eql('Hello world!');
});
...