Невозможно переключить полноэкранный режим в testcafe - PullRequest
0 голосов
/ 01 марта 2019

У меня есть страница реакции в iframe с кнопкой, которая может войти в полноэкранный режим.Я проверил это вручную с Firefox и Chrome, которые оба работают.Тем не менее, щелчок с testcafe не переходит в полноэкранный режим и не проходит тест.

Я предполагаю, что iframe не проблема, потому что он работает вручную, но хотел упомянуть об этом на всякий случай.

Вот некоторые из приложений:

fs.fullScreen = function () {
    const el = (fsEl && fsEl.current) || document.documentElement

    if (el.requestFullscreen) return el.requestFullscreen()
    if (el.mozRequestFullScreen) return el.mozRequestFullScreen()
    if (el.webkitRequestFullscreen) return el.webkitRequestFullscreen()
    if (el.msRequestFullscreen) return el.msRequestFullscreen()
  }

<button onClick={fs.fullScreen}>Fullscreen</button>

Этот тест не пройден:

beforeEach((t) => t.switchToIframe(storybook.iframe))
afterEach((t) => t.switchToMainWindow())

test('The Fullscreen button enters fullscreen mode', async (t) => {
  const { description, fullscreenButton } = storybook.hooks.fullscreen
  await t
    .expect(description.textContent)
    .contains('Browser not in fullscreen mode')
    .click(fullscreenButton)
    .expect(description.textContent)
    .contains('Browser in fullscreen mode')
})

В Firefox я видел ошибку консоли: Request for fullscreen was denied because Element.requestFullscreen() was not called from inside a short running user-generated event handler.

В Chrome я видел ошибку консоли: Uncaught TypeError: fullscreen error.

Ошибка Firefox достаточно ясна, но я не знаю, как обойти ее с помощью testcafe.Существует способ , отредактировавший профиль firefox перед запуском теста, но он не будет работать для chrome или других браузеров.Вероятна ли проблема хрома по той же причине?

Похоже, что это была бы общая проблема, которую решают фреймворки автоматизации, поэтому я мог упустить что-то очевидное?

1 Ответ

0 голосов
/ 01 марта 2019

Мне удалось воспроизвести проблему в простом примере: Тестовая страница:

<button id="btn">click me</button>

<script>
    var button = document.getElementById('btn');

    button.addEventListener('click', function () {
        button.requestFullscreen();
    });
</script>

Тестовый код

test(`test`, async t => {
    await t.click('#btn');
});

Я не уверен, будет ли эта функция поддерживаться илинет, так как мы должны исследовать это подробно.Я думаю, что, по крайней мере, ошибка не должна возникать, поэтому я создал отдельный тикет в репозитории TestCafe.Пожалуйста, обратитесь к следующей ссылке https://github.com/DevExpress/testcafe/issues/3514, чтобы отслеживать прогресс

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