Rayrun
← Back to Discord Forum

Playwright add ENV while testing

huytrinhtd
huytrinhtd

Hi,

I built a website with Remix. I want avoid adding a cookie-consent script while running playwright. This cookie banner will block Playwright from interacting with the UI.

Also I want to remove all the tracking scripts while running playwright.

How should I do that?

Does playwright set the process.env.NODE_ENV to testing while running?

// don't add this script while running tests
shouldAddScript ? <script async dangerouslySetInnerHTML={{ __html: getCookieConsent }}/> : null

Or should I build a version of the site just for the playwright?

WITHOUTSCRIPT=true npm run build

This thread is trying to answer question "Does Playwright set the process.env.NODE_ENV to testing while running and how to avoid adding a cookie-consent script while running tests?"

0 replies

Answer

Sure, you can avoid running a cookie-consent script during your tests in Playwright. Here's how you can do it.

You can use the page.route() method to intercept and block any requests related to the cookie-consent script. Here's a TypeScript example:

import { chromium } from '@playwright/test';

(async () => {
  const browser = await chromium.launch();
  const context = await browser.newContext();

  // Block cookie-consent script
  await context.route('**/cookie-consent.js', route => route.abort());

  const page = await context.newPage();
  
  // Now run your tests
  
  await browser.close();
})();

In this example, any network request that matches the pattern "**/cookie-consent.js" gets aborted.

Alternatively, you can modify the HTML of the page before it loads in Playwright. You can use methods like page.setContent() or page.evaluate() to manipulate the DOM and remove or disable any elements related to cookie consent scripts.

Here's an example using page.evaluate():

import { chromium } from '@playwright/test';

(async () => {
  const browser = await chromium.launch();
  const context = await browser.newContext();
  const page = await context.newPage();

  // Disable cookie-consent script
  await page.evaluate(() => {
    const consentScript = document.querySelector('script[src="cookie-consent.js"]');
    if (consentScript) {
      consentScript.remove();
    }
  });

  // Now run your tests

  await browser.close();
})();

In this example, the cookie-consent script element gets removed from the DOM if it exists.

Choose the approach that best fits your application's structure and requirements.

Related Discord Threads

TwitterGitHubLinkedIn
AboutQuestionsDiscord ForumBrowser ExtensionTagsQA Jobs

Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email luc@ray.run.