Обнаружение браузера с помощью пользовательского агента в хуках крепления - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть несколько тестов, которые нужно запускать только в мобильном браузере. В настоящее время у меня есть клиентская функция для проверки пользовательского агента.

const checkMobile = ClientFunction(() => /iPhone|Android/i.test(navigator.userAgent))

К которому я затем получаю доступ в своих тестах:

test("Check if mobile", async t => { 
  const isMobile = await checkMobile();
  if (isMobile) {
    await t
    // do the tests
  }
}

Есть ли способ для меня использовать это в приспособлении? Как прибор, который будет работать, только если checkMobile равен true? Поэтому мне не нужно повторять эту проверку в каждом тесте вручную. Я уверен, что есть более разумный способ сделать это, чем у меня сейчас. Я попытался выполнить проверку в хуке beforeEach прибора, но у меня не получилось попытаться поделиться результатом этого в переменной для передачи в тесты.

1 Ответ

0 голосов
/ 12 ноября 2018

Чтобы поделиться переменной с крючка прибора для тестирования, вы можете использовать fixture context http://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#sharing-variables-between-fixture-hooks-and-test-code

Кроме того, вы можете реорганизовать свой тест следующим образом:

import { ClientFunction } from 'testcafe';


fixture `test`.page('http://example.com').beforeEach(async t => {
    const isMobile = await checkMobile();

    t.ctx.isMobile = isMobile;
})

const checkMobile = ClientFunction(() => /iPhone|Android/i.test(navigator.userAgent))

function testAndCheck (testName, testFn) {
    const foo = async t => {
        if (t.ctx.isMobile)
            await testFn(t)
        else
            throw new Error('not mobile');
    }

    test(testName, foo);
}

testAndCheck('test1', async t => {
    await t.click('h1');
    await t.click('div');
    await t.click('h1');
})

Здесь я определяю функцию testAndCheck, которая расширяет функцию test с дополнительной проверкой для мобильных устройств.

Кроме того, вы можете обратиться к этому комментарию https://github.com/DevExpress/testcafe/issues/1626#issuecomment-417424558, чтобы узнать, какие существуют другие способы преодоления проблемы.

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