В настоящее время я тестирую интерфейсное приложение React с TestCafe. Текущая среда:
Реакция: 16.3.2
Узел: 8.10.0
TestCafe: 0,23,0
MacOS Mojave 10.14.1
Мы написали около 65 тестов, и все они работают отлично. Мы внедрили компонент единого входа в наше приложение, что создало некоторые проблемы автоматизации. Вместо того, чтобы пытаться направить TestCafe к нашему приложению И этому конкретному провайдеру единого входа, вместо этого мы используем поддельный вызов API.
Упрощенный порядок операций для приложения при обычном использовании:
1. Реагирует приложение запускается, не обнаруживает учетных данных единого входа
2. Служба защиты окружающей среды предоставляет приложению правильный URL-адрес единого входа, реагируя на то, что приложение перенаправляет пользователя на страницу входа в единый вход с помощью window.location.
3. Пользователь входит и SSO перенаправляет обратно в наше приложение с дополнительным параметром запроса URL-адреса и соответствующим значением.
4. Приложение React переходит вперед в состоянии «залогинен»
Довольно простые вещи.
Когда тестируется приложение React, мы просто предоставляем разные URL-адреса, которые указывают на локальный экземпляр ExpressJS на localhost: 3002. Когда приложение React выполняет window.location для поддельного SSO API (http://localhost:3002/fakeOAuth), экземпляр ExpressJS просто выполняет response.redirect (http://localhost:3000/?sso=fakeCode)), и теперь мы возвращаемся к нашему приложению React с дополнительным синтетическим Данные единого входа. Эта схема прекрасно работает, когда не управляется TestCafe.
Когда мы запускаем приложение React через TestCafe, TestCafe зависает при возврате из поддельного вызова единого входа в приложение React. После этого зависания мы должны принудительно уничтожить TestCafe в командной строке с помощью ctrl-c.
Используя инструменты отладки Chrome и просматривая вывод консоли, появляется сообщение:
Uncaught TypeError: __get$ is not a function
at hotCreateRequire (bundle.js:73)
at bundle.js:719
at bundle.js:722
и скриншот можно найти в конце этого поста ниже.
Тестовый код:
import { Selector } from 'testcafe'
fixture 'Landing Page Body Tests'
.page 'localhost:3000
test ('Displays correct main welcome title', async t => {
const landingPage = Selector('.card-title')
await t
.expect((landingPage).innerText).eql('Welcome, Fakeuser', 'Incorrect Username Found')
})
Снимок экрана ошибки TestCafe
У кого-нибудь есть идеи, почему происходит сбой TestCafe? Я несколько раз переделывал тест, исследовал и экспериментировал с использованием классов RoC и ClientFunction TestCafe, но безрезультатно. Любой вклад будет принята с благодарностью.