Проверьте содержимое страницы после перезагрузки на Jest с Puppeteer - PullRequest
0 голосов
/ 04 июня 2019

Я разрабатываю библиотеку 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

1 Ответ

0 голосов
/ 04 июня 2019

Тесты не прошли, потому что последняя часть под комментарием \\ Undo the changes не была запущена, а файл теста остался с New title.

С тестом ниже, он работал отлично:

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 change', async () => {

    // If this test failed previously, lets guarantee that
    // everything is correct again before we begin
    const file    = 'test/01/index.html'
    const content = ( await read( file, 'utf8' ) ).replace( 'New title', 'Old title' );
    await write( file, content );

    const server  = await reloader( { dir: 'test/01' } );

    await page.goto( 'http://localhost:' + server.port );

    await expect( page.title()).resolves.toMatch( 'Old title' );

    // Read and modify index.html to generate a refresh 
    await write( file, content.replace( 'Old title', 'New title' ) );

    // Wait the page to refresh
    await page.waitForNavigation( { waitUntil: 'networkidle2' } )

    await expect( page.title()).resolves.toMatch( 'New title' );

    // Undo the changes
    write( file, content );

});
...