В моем Fixture у меня есть действие, которое начнет загружать файл с помощью браузера. Это работало очень хорошо, пока сервер не ответит напрямую.
.expect(fs.existsSync(downloadsFolder()+'/export.xml')).ok()
Но теперь у меня есть файл, который необходимо создать серверу, и, таким образом, наступит время ожидания. Я попытался расширить функцию:
.expect(fs.existsSync(downloadsFolder()+'/export.xml')).ok('War wohl nicht erfolgreich',{ timeout: 300000 })
Но результат такой же, как и при первой попытке. Я провел некоторое исследование и обнаружил:
async function CheckFileExistsWithTimeDelay(t, timeDelay, fileNameAndPath) {
for (var i = 0; i < timeDelay; i++) {
console.log('Waited for a total of ' + i.toString() + ' microseconds');
await t.wait(1);
if (fs.existsSync(fileNameAndPath)) {
// break;
return;
}
}
};
Это тоже не работает. Я думаю, что функция watch file блокирует Fs, и поэтому браузер не может загрузить файл (записать файл). Также это не работает:
async function waitForFile (path) {
for (let i = 0; i < 300; i++) {
if (fs.existsSync(path))
return true;
await t.wait(1000);
}
return fs.existsSync(path);
}
await t.expect(await waitForFile(downloadsFolder()+'/export.xml')).ok("War wohl nicht erfolgreich", { timeout: 300000 });
Похоже, что загрузка файла завершится неудачно, пока testcafe не будетжду некоторое время. Если файл загружен напрямую, все в порядке.
Есть ли хороший пример ожидания загруженного файла без блокировки fs?
Был запрошен, поэтому я добавляю его сюда: Строка, где testcafeполучит команду на скачивание)
await t
.click(Selector('button').withText('Aktionen'))
.click(Selector('a').withText('Xml Exportieren'));
Как я уже писал. Сразу загрузка работает отлично. Пока загрузка не задерживается, это терпит неудачу. Похоже, что какой-то хук висит на файле, и поэтому хром не может загрузить.
НОВАЯ ИНФОРМАЦИЯ 1 Сервер ответит ровно через 38,7 секунды после нажатия на ссылку для скачивания. После того, как я сделаю это с testcafe, я попаду в окно браузера
Если я использую реальный случай, значит, я нажму на ссылку наНа физическом сайте файл скачивается хорошо через 38 секунд. Нет ошибки.
НОВАЯ ИНФОРМАЦИЯ 2 Я также попытался добавить длинный .wait (150000) к устройству и затем проверить, существует ли файл. Браузер пытался загрузить файл в фоновом режиме, ожидая в цикле .wait (150000). А также это не удалось.
Так что я думаю, что это доказательство того, что это проблема Testcafe, а не проблема узла.