const puppeteer = require('puppeteer'); const recorder = require('../../index'); const autoScroll = async (page) => { await page.evaluate(async () => { await new Promise((resolve) => { let totalHeight = 0; const distance = 100; const timer = setInterval(() => { const { scrollHeight } = document.body; window.scrollBy(0, distance); totalHeight += distance; if (totalHeight >= scrollHeight) { clearInterval(timer); resolve(); } }, 500); }); }); }; describe('Mockeer', () => { beforeAll(async () => { await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] }); }); afterAll(async () => { await puppeteer.close(); }); describe('Record', () => { it('a simple test', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser); await page.goto('http://127.0.0.1:8080/index.html'); await autoScroll(page); await page.close(); await browser.close(); }, 10000); it('replaceImage', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { replaceImage: true, }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('allowImageRecourses', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { allowImageRecourses: false, }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('with custom name', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { fixtureName: 'this is my custom test name', }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('with custom fixtures dir', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { fixturesDir: './src/tests/integration/__fixtures__/custom-dir', }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('with custom svg template', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { svgTemplate: '', }); await page.goto('http://127.0.0.1:8080/index.html'); await autoScroll(page); await page.close(); await browser.close(); }, 10000); it('with specific page', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page1 = await browser.newPage(); const page2 = await browser.newPage(); page1.setViewport({ width: 0, height: 0 }); await recorder(browser, { page: page2, }); await page1.goto('http://127.0.0.1:8080/index.html'); await page2.goto('http://127.0.0.1:8080/contact.html'); await autoScroll(page2); await page1.close(); await page2.close(); await browser.close(); }, 10000); it('browser with multiple pages', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page1 = await browser.newPage(); const page2 = await browser.newPage(); const page3 = await browser.newPage(); await recorder(browser); await page1.goto('http://127.0.0.1:8080/index.html'); await page2.goto('http://127.0.0.1:8080/contact.html'); await page3.goto('http://127.0.0.1:8080/examples.html'); await page1.close(); await page2.close(); await page3.close(); await browser.close(); }, 10000); }); describe('Record', () => { beforeAll(() => { process.env.CI = 'true'; }); it('a simple test', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser); await page.goto('http://127.0.0.1:8080/index.html'); await autoScroll(page); await page.close(); await browser.close(); }, 20000); it('replaceImage', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { replaceImage: true, }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('allowImageRecourses', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { allowImageRecourses: false, }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('with custom name', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { fixtureName: 'this is my custom test name', }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('with custom fixtures dir', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { fixturesDir: './src/tests/integration/__fixtures__/custom-dir', }); await page.goto('http://127.0.0.1:8080/index.html'); await page.close(); await browser.close(); }, 10000); it('with custom svg template', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page = await browser.newPage(); page.setViewport({ width: 0, height: 0 }); await recorder(browser, { svgTemplate: '', }); await page.goto('http://127.0.0.1:8080/index.html'); await autoScroll(page); await page.close(); await browser.close(); }, 10000); it('with specific page', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page1 = await browser.newPage(); const page2 = await browser.newPage(); page1.setViewport({ width: 0, height: 0 }); await recorder(browser, { page: page2, }); await page1.goto('http://127.0.0.1:8080/index.html'); await page2.goto('http://127.0.0.1:8080/contact.html'); await autoScroll(page2); await page1.close(); await page2.close(); await browser.close(); }, 10000); it('browser with multiple pages', async () => { const browser = await puppeteer.launch({ headless: false, devtools: false }); const page1 = await browser.newPage(); const page2 = await browser.newPage(); const page3 = await browser.newPage(); await recorder(browser); await page1.goto('http://127.0.0.1:8080/index.html'); await page2.goto('http://127.0.0.1:8080/contact.html'); await page3.goto('http://127.0.0.1:8080/examples.html'); await page1.close(); await page2.close(); await page3.close(); await browser.close(); }, 10000); }); });