Я разрабатываю библиотеку nodejs, похожую на live-reload / browser-sync, и использую jest-puppeteer для автоматизированных тестов.
Когда я вручную тестирую свою библиотеку, открывая браузер и изменяя файл, voilá , страницы обновляются (через введенный код, который запускается location.reload( true )
, когда он получает сигнал через веб-сокет).
Но когда я запускаю тест с Jest, кажется, что Puppeteer не получает обновление.
// "reloader" is my library
import reloader from './../src/index';
import * as fs from 'fs';
import { promisify } from 'util';
const read = promisify( fs.readFile )
const write = promisify( fs.writeFile )
test('1. Refresh when file changes', async () => {
const server = await reloader( { dir: 'test/01' } );
await page.goto( 'http://localhost:' + server.port );
// This test passes
await expect( page.title()).resolves.toMatch( 'Old title' );
// Read and modify index.html to generate a refresh
const file = 'test/01/index.html'
const content = await read( file, 'utf8' );
await write( file, content.replace( 'Old title', 'New title' ) );
// Wait the page to refresh
await page.waitForNavigation( { waitUntil: 'networkidle2' } )
// This test doesn't pass
// Still receiving "Old title"
await expect( page.title()).resolves.toMatch( 'New title' );
// Undo the changes
write( file, content );
});
В последнем тесте вместо получения New title
(который написан правильнов файле index.html
) я все еще получаю Old title