Ожидание интеллектуального запроса для клиентских функций? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть clientFunction как часть объекта моей страницы для получения отдельных правил стиля:

getStyleRule(ruleName: string): Promise<string> {
    declare var selector: Selector;
    return ClientFunction(() => 
       selector().style.getPropertyValue(ruleName), {
       dependencies: { selector: this.selector, ruleName }
    })();
}

А затем в моем тесте я наведите элемент и ожидаю изменения стиля:

await t.hover(someSelector);
await t.expect(pageObject.getStyleRule('width')).eql('100%')

Похоже, что в Chrome 68 это происходит последовательно, но если я добавлю speed: 0.5 к действию наведения мыши, оно пройдет.Это заставляет меня поверить, что умный запрос не повторяет утверждения, значение которых исходит от клиентских функций.

В качестве альтернативы, я могу сделать что-то не так с тем, как я вызываю clientFunction ...

1 Ответ

0 голосов
/ 28 сентября 2018

1) TestCafe ожидает и автоматически переоценивает результаты, возвращаемые ClientFunctions;следующий тест докажет это:

import { ClientFunction } from 'testcafe';
 
fixture('Client Function')
    .page('http://example.com');
 
function clientFunction():Promise<any> {
    return ClientFunction(() => false)();
}
 
test('Reevaluate', async t => {
    await t.expect(clientFunction()).ok({ timeout: 30000 });
});

Вы увидите сообщение «Ожидание выполнения подтверждения» во время переоценки утверждения.

2) Вам не нужно использовать ClientFunction для получения свойств стиля элемента;Вы можете просто использовать метод SelectS getStyleProperty.

https://devexpress.github.io/testcafe/documentation/test-api/selecting-page-elements/dom-node-state.html#members-specific-to-element-nodes

3) Я не могу быть уверен, не взаимодействуя сначала с вашей страницей, но я думаю, что действие при наведении выполняется слишком быстро, чтобы быть распознанным скриптамина твоей странице.В этом случае вы можете установить тестовую скорость перед действием наведения, а затем восстановить ее после действия наведения с помощью метода t.setTestSpeed:

await t
    .setTestSpeed(0.5)
    .hover(...)
    .setTestSpeed(1.0)

https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#setting-test-speed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...