From 4cce7e5bffa2e724bd8653b5487efb3b8d42ef64 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 26 Mar 2024 14:20:20 -0700 Subject: [PATCH] doc: document mocking read-only browser apis (#30122) Documents https://github.com/microsoft/playwright/issues/30115 --- docs/src/mock-browser-js.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/src/mock-browser-js.md b/docs/src/mock-browser-js.md index 26f76f6363..9647e0a151 100644 --- a/docs/src/mock-browser-js.md +++ b/docs/src/mock-browser-js.md @@ -60,6 +60,23 @@ test('show battery status', async ({ page }) => { ``` +## Mocking read-only APIs + +Some APIs are read-only so you won't be able to assign to a navigator property. For example, + +```js +// Following line will have no effect. +navigator.cookieEnabled = true; +``` + +However, if the property is [configurable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#configurable), you can still override it using the plain JavaScript: + +```js +await page.addInitScript(() => { + Object.defineProperty(Object.getPrototypeOf(navigator), 'cookieEnabled', { value: false }); +}); +``` + ## Verifying API calls Sometimes it is useful to check if the page made all expected APIs calls. You can