chrome-devtools-frontend
Version:
Chrome DevTools UI
89 lines (77 loc) • 2.74 kB
text/typescript
// Copyright 2023 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Models from '../models/models.js';
import * as Converters from './converters.js';
describe('PuppeteerConverter', () => {
it('should stringify a flow', async () => {
const converter = new Converters.PuppeteerConverter.PuppeteerConverter(
' ',
);
const [result, sourceMap] = await converter.stringify({
title: 'test',
steps: [{type: Models.Schema.StepType.Scroll, selectors: [['.cls']]}],
});
const expected = `const puppeteer = require('puppeteer'); // v23.0.0 or later
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const timeout = 5000;
page.setDefaultTimeout(timeout);
{
const targetPage = page;
await puppeteer.Locator.race([
targetPage.locator('.cls')
])
.setTimeout(timeout)
.scroll({ scrollTop: undefined, scrollLeft: undefined});
}
await browser.close();`;
const actual = result.substring(0, expected.length);
assert.strictEqual(actual, expected, `Unexpected start of generated result:\n${actual}`);
assert.deepEqual(sourceMap, [1, 8, 8]);
});
it('should stringify a step', async () => {
const converter = new Converters.PuppeteerConverter.PuppeteerConverter(
' ',
);
const result = await converter.stringifyStep({
type: Models.Schema.StepType.Scroll,
});
assert.strictEqual(
result,
`{
const targetPage = page;
await targetPage.evaluate((x, y) => { window.scroll(x, y); }, undefined, undefined)
}
`,
);
});
it('should stringify a flow for Firefox', async () => {
const converter = new Converters.PuppeteerFirefoxConverter.PuppeteerFirefoxConverter(
' ',
);
const [result, sourceMap] = await converter.stringify({
title: 'test',
steps: [{type: Models.Schema.StepType.Scroll, selectors: [['.cls']]}],
});
const expected = `const puppeteer = require('puppeteer'); // v23.0.0 or later
(async () => {
const browser = await puppeteer.launch({browser: 'firefox'});
const page = await browser.newPage();
const timeout = 5000;
page.setDefaultTimeout(timeout);
{
const targetPage = page;
await puppeteer.Locator.race([
targetPage.locator('.cls')
])
.setTimeout(timeout)
.scroll({ scrollTop: undefined, scrollLeft: undefined});
}
await browser.close();`;
const actual = result.substring(0, expected.length);
assert.strictEqual(actual, expected, `Unexpected start of generated result:\n${actual}`);
assert.deepEqual(sourceMap, [1, 8, 8]);
});
});