#testing #automation #automated-tests #e2e-testing #testcafe
#тестирование #автоматизация #автоматизированные тесты #e2e-тестирование #testcafe
Вопрос:
Я автоматизирую форму сбора данных. Первым элементом этой формы является элемент управления загрузкой файла изображения, и я загружаю изображение размером 5 КБ. Но после этого шага тест выполняет следующий шаг, который заключается в записи текста в текстовое поле, а затем останавливается почти на 30 секунд. Как уменьшить это ненужное ожидание?
test('Test 1', async t => {
await listingPage.uploadImage();
await listingPage.listAnItem();
..
Загрузить код изображения
async uploadImage() {
await t.setFilesToUpload(this.imageInput, ['../../uploads/photo02.jpg']);
}
** Блок кода ввода данных **
async listAnItem() {
await t
.typeText(Selector('#description'), this.DESCRIPTION) /* --> Application is slowing after this step */
.click(this.categorySelect)
.click(Selector('#react-select-2-option-0-0'))
файл .testcaferc.json
{
"browsers": [ "chrome", "safari" ],
"remoteChromeVersion": "80",
"src": "specs",
"reporter": [
{
"name": "spec"
}
],
"speed": 1,
"debugOnFail": false,
"skipJsErrors": true,
"selectorTimeout": 20000,
"assertionTimeout": 20000,
"pageLoadTimeout": 8000
}
Фрагмент DOM для загрузки файла
<input aria-describedby="error__images" aria-label="Upload an image" tabindex="0" type="file" multiple="" accept="image/jpeg, image/png" data-testid="imageInput" class="ImageInputstyles__Input-sc-2l692w-7 aosWu">
Комментарии:
1. Не могли бы вы уточнить, показывает ли TestCafe сообщение «Ожидание появления элемента …» в браузере в течение этого периода ожидания? Остановится ли TestCafe при выполнении действия TypeText, если ему не предшествует загрузка файла?
2. @ArseniyRubtsov Да. Он говорит «Ожидание появления элемента …». Но браузер загружается задолго до этого. и это ждет очень долго.
3. Скорее всего, это поведение не связано с
setFilesToUpload
действием. Вы можете проверить это, пропустив это действие в своем тесте. Ожидает ли TestCafe до или после написания текстаtypeText
действием? Такая задержка может возникнуть, когда нужный вам элемент скрыт под другим элементом. Если это так, вы можете попробовать установить смещения для проблемного действия. Было бы полезно, если бы вы отправили пример, иллюстрирующий проблему.4. ДА. кажется, он ждет в раскрывающемся списке. <div class=»listingSelect__single-value css-1uccc91-singleValue»>Другое</div><div class=»css-1g6gooi»><div class=»listingSelect__input» style=»дисплей: встроенный блок;»>» автозаполнение =»выкл.» автозамена =»выкл.» идентификатор =»Список категорий __категория__выберите» проверка орфографии = «ложь» tabindex =»0″ тип = «текст» aria-автозаполнение =»список» aria-labelledby =»ошибка__категория» стиль =»размер поля: поле содержимого; ширина: 2 пикселя; значение =»»><div style=»позиция: абсолютная видимость: скрытая; «></div></div> </div>
5. @user2451016 Мне не удалось воспроизвести проблему с данным фрагментом разметки. Не могли бы вы поделиться всей страницей, которая показывает проблемное поведение?
Ответ №1:
Сама проблема не была связана с контролем загрузки файлов. Проблема возникла из-за выпадающего списка (после загрузки файла), который динамически обновлял другой выпадающий список, в котором значения заполнялись динамически на основе значения, выбранного в первом раскрывающемся списке.
Переписывание операции выпадающего списка примерно так, как показано ниже, решило проблему:
async fillSubCategoryFields(catType = 'CAT_NAME') {
await t
.click(this.categorySelect, { timeout: 50 })
.click(Selector('.listingSelect__option').withText(catType));
}