diff --git a/test/interception.spec.js b/test/interception.spec.js index 8e3e86b9cd..6f4de76feb 100644 --- a/test/interception.spec.js +++ b/test/interception.spec.js @@ -19,6 +19,7 @@ const fs = require('fs'); const path = require('path'); const { helper } = require('../lib/helper'); const utils = require('./utils'); +const vm = require('vm') /** * @type {PageTestSuite} @@ -614,6 +615,28 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p expect(helper.globToRegex('**/*.{png,jpg,jpeg}').test('https://localhost:8080/c.css')).toBeFalsy(); }); }); + + describe('regexp', function () { + it ('should work with regular expression passed from a different context', async({page, server}) => { + const ctx = vm.createContext() + const regexp = vm.runInContext('new RegExp("empty\\.html")', ctx) + + await page.route(regexp, request => { + expect(request.url()).toContain('empty.html'); + expect(request.headers()['user-agent']).toBeTruthy(); + expect(request.method()).toBe('GET'); + expect(request.postData()).toBe(undefined); + expect(request.isNavigationRequest()).toBe(true); + expect(request.resourceType()).toBe('document'); + expect(request.frame() === page.mainFrame()).toBe(true); + expect(request.frame().url()).toBe('about:blank'); + request.continue(); + }); + + const response = await page.goto(server.EMPTY_PAGE); + expect(response.ok()).toBe(true); + }) + }) }; /**