Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firefox Page Load fails #8957

Closed
sureshahead opened this issue Sep 16, 2021 · 10 comments
Closed

Firefox Page Load fails #8957

sureshahead opened this issue Sep 16, 2021 · 10 comments
Assignees

Comments

@sureshahead
Copy link

sureshahead commented Sep 16, 2021

Context:

Playwright Version: 1.14.1
Operating System: Windows 10 Enterprise (64-bit)
Browser: All but fails to load in Firefox

Code Snippet

const playwright = require('playwright');

(async () => {
  for (const browserType of ['firefox']) {
    const browser = await playwright[browserType].launch({ 
      headless: false
    });
    const context = await browser.newContext();
		console.log("test");
    const page = await context.newPage();
	console.log("test");
    await page.goto('http://whatsmyuseragent.org/');
    await page.screenshot({ path: `example-${browserType}.png` });
    await browser.close();
  }
})();

Describe the bug

Firefox browser opens but the page doesn't load. Have added debug log and following is what I got. Need support here as am clueless.

PS C:\Users\XXXXX\code\automation\pwframework> node .\hello-world.js
  pw:browser <launching> C:\Users\XXXXX\AppData\Local\ms-playwright\firefox-1281\firefox\firefox.exe -no-remote -wait-for-browser -foreground -profile C:\Users\XXXXX\AppData\Local\Temp\1\playwright_firefoxdev_profile-m4i03D -juggler-pipe -silent +0ms
  pw:browser <launched> pid=2264 +8ms
  pw:browser [pid=2264][out]  +528ms
  pw:browser [pid=2264][out] Juggler listening to the pipe +0ms
  pw:browser [pid=2264][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\\Users\\XXXXX\\AppData\\Local\\Temp\\1\\playwright_firefoxdev_profile-m4i03D\\search.json.mozlz4", (void 0))) +75ms
  pw:browser [pid=2264][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=6.07198) [GFX1-]: DCLayerTree(no device) +90ms
  pw:browser [pid=2264][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=6.07198) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=6.07198) [GFX1-]: Failed to connect WebRenderBridgeChild. +0ms
  pw:browser [pid=2264][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=6.07198) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=6.07198) |[2][GFX1-]: Fallback WR to SW-WR + D3D11 (t=6.07198) [GFX1-]: Fallback WR to SW-WR + D3D11 +1ms
  pw:browser [pid=2264][out] console.error: Region.jsm: "Error fetching region" (new TypeError("NetworkError when attempting to fetch resource.", "chrome://juggler/content/NetworkObserver.js", 553)) +1s
  pw:browser [pid=2264][out] console.error: Region.jsm: "Failed to fetch region" (new Error("NO_RESULT", "resource://gre/modules/Region.jsm", 419)) +1ms
test
  pw:browser [pid=2264][out] 1631779143861      addons.xpi      ERROR   System addon update list error Error: Failed downloading XML, status: 0, reason: error +7m
@sureshahead
Copy link
Author

FYI : Edge and Chrome works fine though.

@dgozman
Copy link
Contributor

dgozman commented Sep 16, 2021

Could you please try passing this pref? Does that help?

// ...
const browser = await playwright[browserType].launch({
  headless: false,
  firefoxUserPrefs: { "browser.region.network.url": "" }
});
// ...

@sureshahead
Copy link
Author

sureshahead commented Sep 17, 2021

@dgozman : While some error logs are not there after using the code you shared, the browser still opens and just stays idle without anything happening on it.

Error Log : (FYI : Three of us started on PlayWright and the one with Mac did not face issue right from beginning but myself and another guy with Windows seeing this issue)

  pw:browser <launching> C:\Users\surr\AppData\Local\ms-playwright\firefox-1281\firefox\firefox.exe -no-remote -wait-for-browser -foreground -profile C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-QeMEuI -juggler-pipe -silent +0ms
  pw:browser <launched> pid=34996 +8ms
  pw:browser [pid=34996][out]  +523ms
  pw:browser [pid=34996][out] Juggler listening to the pipe +1ms
  pw:browser [pid=34996][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright_firefoxdev_profile-QeMEuI\\search.json.mozlz4", (void 0))) +39ms
  pw:browser [pid=34996][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=6.22438) [GFX1-]: DCLayerTree(no device) +108ms
  pw:browser [pid=34996][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=6.22438) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=6.22438) [GFX1-]: Failed to connect WebRenderBridgeChild. +0ms
  pw:browser [pid=34996][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=6.22438) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=6.22438) |[2][GFX1-]: Fallback WR to SW-WR + D3D11 (t=6.22438) [GFX1-]: Fallback WR to SW-WR + D3D11 +10ms
test
  pw:browser [pid=34996][out] 1631877037693     addons.xpi      ERROR   System addon update list error Error: Failed downloading XML, status: 0, reason: error +7m

@dgozman
Copy link
Contributor

dgozman commented Sep 17, 2021

@sureshahead Thank you for trying that. Since it did not help and we cannot repro this locally, could you please record detailed logs and send them to us?

# Linux/macOS
DEBUG=pw:api,pw:browser*,pw:protocol node my-script.js

# Windows with cmd.exe
set DEBUG=pw:api,pw:browser*,pw:protocol
node my-script.js

# Windows with PowerShell
$env:DEBUG="pw:api,pw:browser*,pw:protocol"
node my-script.js

@sureshahead
Copy link
Author

@dgozman : Please find the log as below after setting the env var you mentioned.

******\test\functional\pwframework\src\specs> node .\hello-world.js
  pw:api => browserType.launch started +0ms
  pw:browser <launching> C:\Users\surr\AppData\Local\ms-playwright\firefox-1281\firefox\firefox.exe -no-remote -wait-for-browser -foreground -profile C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-F3xVS9 -juggler-pipe -silent +0ms
  pw:browser <launched> pid=54264 +11ms
  pw:protocol SEND ► {"id":1,"method":"Browser.enable","params":{"attachToDefaultContext":false}} +0ms
  pw:protocol SEND ► {"id":2,"method":"Browser.getInfo"} +1ms
  pw:browser [pid=54264][out]  +696ms
  pw:browser [pid=54264][out] Juggler listening to the pipe +1ms
  pw:protocol ◀ RECV {"id":2,"result":{"version":"Firefox/91.0","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"}} +745ms
  pw:browser [pid=54264][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright_firefoxdev_profile-F3xVS9\\search.json.mozlz4", (void 0))) +55ms
  pw:browser [pid=54264][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=8.24007) [GFX1-]: DCLayerTree(no device) +156ms  pw:browser [pid=54264][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=8.24007) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=8.24007) [GFX1-]: Failed to connect WebRenderBridgeChild. +1ms
  pw:browser [pid=54264][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=8.24007) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=8.24007) |[2][GFX1-]: Fallback WR to SW-WR + D3D11 (t=8.39007) [GFX1-]: Fallback WR to SW-WR + D3D11 +0ms
  pw:protocol ◀ RECV {"id":1} +687ms
  pw:api <= browserType.launch succeeded +2s
  pw:api => browser.newContext started +1ms
  pw:protocol SEND ► {"id":3,"method":"Browser.createBrowserContext","params":{"removeOnDetach":true}} +4ms
  pw:protocol ◀ RECV {"id":3,"result":{"browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15"}} +1ms
  pw:protocol SEND ► {"id":4,"method":"Browser.setDownloadOptions","params":{"browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15","downloadOptions":{"behavior":"cancel","downloadsDir":"C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright-artifacts-RhFrtQ"}}} +2ms
  pw:protocol SEND ► {"id":5,"method":"Browser.setDefaultViewport","params":{"browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15","viewport":{"viewportSize":{"width":1280,"height":720},"deviceScaleFactor":1}}} +1ms
  pw:protocol SEND ► {"id":6,"method":"Browser.setColorScheme","params":{"browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15","colorScheme":"light"}} +1ms
  pw:protocol SEND ► {"id":7,"method":"Browser.setReducedMotion","params":{"browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15","reducedMotion":"no-preference"}} +1ms
  pw:protocol ◀ RECV {"id":4} +3ms
  pw:protocol ◀ RECV {"id":5} +1ms
  pw:protocol ◀ RECV {"id":6} +0ms
  pw:protocol ◀ RECV {"id":7} +1ms
  pw:api <= browser.newContext succeeded +14ms
test
  pw:api => browserContext.newPage started +3ms
  pw:protocol SEND ► {"id":8,"method":"Browser.newPage","params":{"browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15"}} +6ms
  pw:protocol ◀ RECV {"method":"Browser.attachedToTarget","params":{"sessionId":"2a050ebe-6224-44e1-bf5e-c1aa3c1a46dc","targetInfo":{"targetId":"1c492172-3a63-472b-8baf-a2d60f6e634a","type":"page","browserContextId":"0f4c22a6-bea0-4092-b139-b327f41c4b15"}}} +204ms
  pw:protocol SEND ► {"method":"Page.addScriptToEvaluateOnNewDocument","params":{"script":"","worldName":"__playwright_utility_world__"},"id":9,"sessionId":"2a050ebe-6224-44e1-bf5e-c1aa3c1a46dc"} +3ms
  pw:protocol ◀ RECV {"id":8,"result":{"targetId":"1c492172-3a63-472b-8baf-a2d60f6e634a"}} +199ms

@mxschmitt
Copy link
Member

@sureshahead we fixed in version 1.15 something related to Firefox on Windows 10 Enterprise. Could you try version 1.15 which got released yesterday?

@sureshahead
Copy link
Author

sureshahead commented Sep 22, 2021

@mxschmitt : I did update and run the test with test runner (code below). Still facing issue, logs attached.

//hello_world.spec.ts
import { test, expect } from '@playwright/test';
test('Sample Test @sample', async ({ page }) => {
    test.setTimeout(20000);
    await page.goto('http://whatsmyuseragent.org/');
    await page.screenshot({ path: `example.png` });

  });
//playwright.config.ts
import { PlaywrightTestConfig } from '@playwright/test';
import { reportFileName } from './src/helpers/utils';
const config: PlaywrightTestConfig = {
  timeout: 20000,
  globalTeardown:require.resolve('./global-teardown'),
  use: {
    screenshot: 'only-on-failure',
    browserName: 'firefox',
    ignoreHTTPSErrors: true,
    headless: false,
  },
};
export default config;

Logs :

`\test\functional\pwframework> npx playwright test --grep=@sample --headed
Using config at C:\Users\surr\code\automation\hackathon\uicomponent\test\functional\pwframework\playwright.config.ts

Running 1 test using 1 worker

     src\specs\hello_world.spec.ts:2:1 › Sample Test @sample
  pw:api => browserType.launch started +0ms
  pw:browser <launching> C:\Users\surr\AppData\Local\ms-playwright\firefox-1295\firefox\firefox.exe -no-remote -wait-for-browser -foreground -profile C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-vKHyFy -juggler-pipe -silent +0ms
  pw:browser <launched> pid=3776 +11ms
  pw:protocol SEND ► {"id":1,"method":"Browser.enable","params":{"attachToDefaultContext":false}} +0ms
  pw:protocol SEND ► {"id":2,"method":"Browser.getInfo"} +1ms
  pw:browser [pid=3776][out]  +837ms
  pw:browser [pid=3776][out] Juggler listening to the pipe +0ms
  pw:protocol ◀ RECV {"id":2,"result":{"version":"Firefox/92.0","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0"}} +943ms
  pw:browser [pid=3776][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright_firefoxdev_profile-vKHyFy\\search.json.mozlz4", (void 0))) +113ms
  pw:browser [pid=3776][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=9.61198) [GFX1-]: DCLayerTree(no device) +123ms
  pw:browser [pid=3776][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=9.61198) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=9.61198) [GFX1-]: Failed to connect WebRenderBridgeChild. +1ms
  pw:browser [pid=3776][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=9.61198) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=9.61198) |[2][GFX1-]: Fallback WR to SW-WR + D3D11 (t=9.61198) [GFX1-]: Fallback WR to SW-WR + D3D11 +1ms
  pw:protocol ◀ RECV {"id":1} +787ms
  pw:api <= browserType.launch succeeded +2s
  pw:api => browser.newContext started +3ms
  pw:protocol SEND ► {"id":3,"method":"Browser.createBrowserContext","params":{"removeOnDetach":true}} +5ms
  pw:protocol ◀ RECV {"id":3,"result":{"browserContextId":"52732619-9015-482c-a955-1861da39e849"}} +1ms
  pw:protocol SEND ► {"id":4,"method":"Browser.setDownloadOptions","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","downloadOptions":{"behavior":"cancel","downloadsDir":"C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright-artifacts-Do7EJn"}}} +1ms
  pw:protocol SEND ► {"id":5,"method":"Browser.setDefaultViewport","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","viewport":{"viewportSize":{"width":1280,"height":720},"deviceScaleFactor":1}}} +0ms
  pw:protocol SEND ► {"id":6,"method":"Browser.setIgnoreHTTPSErrors","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","ignoreHTTPSErrors":true}} +1ms
  pw:protocol SEND ► {"id":7,"method":"Browser.setColorScheme","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","colorScheme":"light"}} +0ms
  pw:protocol SEND ► {"id":8,"method":"Browser.setReducedMotion","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","reducedMotion":"no-preference"}} +0ms
  pw:protocol SEND ► {"id":9,"method":"Browser.setForcedColors","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","forcedColors":"none"}} 
+0ms
  pw:protocol ◀ RECV {"id":4} +1ms
  pw:protocol ◀ RECV {"id":5} +0ms
  pw:protocol ◀ RECV {"id":6} +1ms
  pw:protocol ◀ RECV {"id":7} +0ms
  pw:protocol ◀ RECV {"id":8} +1ms
  pw:protocol ◀ RECV {"id":9} +0ms
  ✘  src\specs\hello_world.spec.ts:2:1 › Sample Test @sample (20s)
  pw:api => browserContext.newPage started +2ms
  pw:protocol SEND ► {"id":10,"method":"Browser.newPage","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849"}} +8ms
  pw:protocol ◀ RECV {"method":"Browser.attachedToTarget","params":{"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d","targetInfo":{"targetId":"44490d93-52b1-4ba7-b97a-6d2f00a70676","type":"page","browserContextId":"52732619-9015-482c-a955-1861da39e849"}}} +213ms
  pw:protocol SEND ► {"method":"Page.addScriptToEvaluateOnNewDocument","params":{"script":"","worldName":"__playwright_utility_world__"},"id":11,"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d"} +2ms
  pw:protocol ◀ RECV {"id":10,"result":{"targetId":"44490d93-52b1-4ba7-b97a-6d2f00a70676"}} +260ms
  pw:browser [pid=3776][out] console.error: Region.jsm: "Error fetching region" (new Error("TIMEOUT", "resource://gre/modules/Region.jsm", 772)) +5s        
  pw:browser [pid=3776][out] console.error: Region.jsm: "Failed to fetch region" (new Error("TIMEOUT", "resource://gre/modules/Region.jsm", 419)) +0ms      
  pw:api => browserContext.close started +18s
  pw:protocol SEND ► {"id":12,"method":"Browser.removeBrowserContext","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849"}} +17s
  pw:protocol ◀ RECV {"method":"Browser.detachedFromTarget","params":{"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d","targetId":"44490d93-52b1-4ba7-b97a-6d2f00a70676"}} +8ms
  pw:api <= browserContext.newPage failed +14ms
  pw:protocol ◀ RECV {"id":11,"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d","error":{"message":"Failed \"addScriptToEvaluateOnNewDocument\": connector 
for namespace \"page\" in channel \"browser::page[44490d93-52b1-4ba7-b97a-6d2f00a70676]\" is disposed.","data":"_rejectCallbacksFromConnector@chrome://juggler/content/SimpleChannel.js:81:25\ndispose@chrome://juggler/content/SimpleChannel.js:92:27\ndispose@chrome://juggler/content/protocol/PageHandler.js:146:23\n_dispose@chrome://juggler/content/protocol/Dispatcher.js:113:21\ndestroySession@chrome://juggler/content/protocol/Dispatcher.js:34:13\n_onTargetDestroyed@chrome://juggler/content/protocol/BrowserHandler.js:113:22\nhandlerWrapper@chrome://juggler/content/Helper.js:37:51\nemit@resource://gre/modules/EventEmitter.jsm:160:20\ndispose@chrome://juggler/content/TargetRegistry.js:642:20\nonTabCloseListener@chrome://juggler/content/TargetRegistry.js:189:18\nonCloseWindow@chrome://juggler/content/TargetRegistry.js:240:27\n"}} +12ms
  pw:protocol ◀ RECV {"id":12} +0ms
  pw:api <= browserContext.close succeeded +8ms
  pw:api => browser.close started +5ms
  pw:browser [pid=3776] <gracefully close start> +14s
  pw:browser [pid=3776][err] JavaScript error: resource:///modules/Interactions.jsm, line 230: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIUserIdleService.removeIdleObserver] +51ms
  pw:browser [pid=3776][err]  +373ms
  pw:browser [pid=3776][err] ###!!! [Parent][MessageChannel] Error: (msgtype=0x930001,name=PTexture::Msg___delete__) Channel closing: too late to send/recv, messages will be lost +0ms
  pw:browser [pid=3776][err]  +0ms
  pw:browser [pid=3776][err]  +1ms
  pw:browser [pid=3776][err] ###!!! [Parent][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost +0ms
  pw:browser [pid=3776][err]  +0ms
  pw:browser [pid=3776] <process did exit: exitCode=0, signal=null> +293ms
  pw:browser [pid=3776] starting temporary directories cleanup +0ms
  pw:browser [pid=3776] finished temporary directories cleanup +48ms
  pw:browser [pid=3776] <gracefully close end> +0ms
  pw:api <= browser.close succeeded +767ms


  1) src\specs\hello_world.spec.ts:2:1 › Sample Test @sample =======================================

    Timeout of 20000ms exceeded.

    Pending operations:
      - browserContext.newPage at node_modules\@playwright\test\lib\test\index.js:407:29

    browserContext.newPage: Page closed

        at Object.page [as fn] (C:\Users\surr\code\automation\hackathon\uicomponent\test\functional\pwframework\node_modules\@playwright\test\lib\test\index.js:407:29)
        at Fixture.setup (C:\Users\surr\code\automation\hackathon\uicomponent\test\functional\pwframework\node_modules\@playwright\test\lib\test\fixtures.js:73:73)
        at FixtureRunner.setupFixtureForRegistration (C:\Users\surr\code\automation\hackathon\uicomponent\test\functional\pwframework\node_modules\@playwright\test\lib\test\fixtures.js:312:5)
        at FixtureRunner.resolveParametersAndRunHookOrTest (C:\Users\surr\code\automation\hackathon\uicomponent\test\functional\pwframework\node_modules\@playwright\test\lib\test\fixtures.js:297:23)
        at WorkerRunner._runTestWithBeforeHooks (C:\Users\surr\code\automation\hackathon\uicomponent\test\functional\pwframework\node_modules\@playwright\test\lib\test\workerRunner.js:449:7)

--- Test output ------------------------------------------------------------------------------------

  pw:api => browserType.launch started +0ms
  pw:browser <launching> C:\Users\surr\AppData\Local\ms-playwright\firefox-1295\firefox\firefox.exe -no-remote -wait-for-browser -foreground -profile C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-vKHyFy -juggler-pipe -silent +0ms
  pw:browser <launched> pid=3776 +11ms
  pw:protocol SEND ► {"id":1,"method":"Browser.enable","params":{"attachToDefaultContext":false}} +0ms
  pw:protocol SEND ► {"id":2,"method":"Browser.getInfo"} +1ms
  pw:browser [pid=3776][out]  +837ms
  pw:browser [pid=3776][out] Juggler listening to the pipe +0ms
  pw:protocol ◀ RECV {"id":2,"result":{"version":"Firefox/92.0","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0"}} +943ms
  pw:browser [pid=3776][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright_firefoxdev_profile-vKHyFy\\search.json.mozlz4", (void 0))) +113ms
  pw:browser [pid=3776][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=9.61198) [GFX1-]: DCLayerTree(no device) +123ms 
  pw:browser [pid=3776][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=9.61198) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=9.61198) [GFX1-]: Failed to connect WebRenderBridgeChild. +1ms
  pw:browser [pid=3776][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: DCLayerTree(no device) (t=9.61198) |[1][GFX1-]: Failed to connect WebRenderBridgeChild. (t=9.61198) |[2][GFX1-]: Fallback WR to SW-WR + D3D11 (t=9.61198) [GFX1-]: Fallback WR to SW-WR + D3D11 +1ms
  pw:protocol ◀ RECV {"id":1} +787ms
  pw:api <= browserType.launch succeeded +2s
  pw:api => browser.newContext started +3ms
  pw:protocol SEND ► {"id":3,"method":"Browser.createBrowserContext","params":{"removeOnDetach":true}} +5ms
  pw:protocol ◀ RECV {"id":3,"result":{"browserContextId":"52732619-9015-482c-a955-1861da39e849"}} +1ms
  pw:protocol SEND ► {"id":4,"method":"Browser.setDownloadOptions","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","downloadOptions":{"behavior":"cancel","downloadsDir":"C:\\Users\\surr\\AppData\\Local\\Temp\\1\\playwright-artifacts-Do7EJn"}}} +1ms
  pw:protocol SEND ► {"id":5,"method":"Browser.setDefaultViewport","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","viewport":{"viewportSize":{"width":1280,"height":720},"deviceScaleFactor":1}}} +0ms
  pw:protocol SEND ► {"id":6,"method":"Browser.setIgnoreHTTPSErrors","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","ignoreHTTPSErrors":true}} +1ms
  pw:protocol SEND ► {"id":7,"method":"Browser.setColorScheme","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","colorScheme":"light"}} +0ms
  pw:protocol SEND ► {"id":8,"method":"Browser.setReducedMotion","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","reducedMotion":"no-preference"}} +0ms
  pw:protocol SEND ► {"id":9,"method":"Browser.setForcedColors","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849","forcedColors":"none"}} 
+0ms
  pw:protocol ◀ RECV {"id":4} +1ms
  pw:protocol ◀ RECV {"id":5} +0ms
  pw:protocol ◀ RECV {"id":6} +1ms
  pw:protocol ◀ RECV {"id":7} +0ms
  pw:protocol ◀ RECV {"id":8} +1ms
  pw:protocol ◀ RECV {"id":9} +0ms
  pw:api <= browser.newContext succeeded +12ms
  pw:api => browserContext.newPage started +2ms
  pw:protocol SEND ► {"id":10,"method":"Browser.newPage","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849"}} +8ms
  pw:protocol ◀ RECV {"method":"Browser.attachedToTarget","params":{"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d","targetInfo":{"targetId":"44490d93-52b1-4ba7-b97a-6d2f00a70676","type":"page","browserContextId":"52732619-9015-482c-a955-1861da39e849"}}} +213ms
  pw:protocol SEND ► {"method":"Page.addScriptToEvaluateOnNewDocument","params":{"script":"","worldName":"__playwright_utility_world__"},"id":11,"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d"} +2ms
  pw:protocol ◀ RECV {"id":10,"result":{"targetId":"44490d93-52b1-4ba7-b97a-6d2f00a70676"}} +260ms
  pw:browser [pid=3776][out] console.error: Region.jsm: "Error fetching region" (new Error("TIMEOUT", "resource://gre/modules/Region.jsm", 772)) +5s        
  pw:browser [pid=3776][out] console.error: Region.jsm: "Failed to fetch region" (new Error("TIMEOUT", "resource://gre/modules/Region.jsm", 419)) +0ms      
  pw:api => browserContext.close started +18s
  pw:protocol SEND ► {"id":12,"method":"Browser.removeBrowserContext","params":{"browserContextId":"52732619-9015-482c-a955-1861da39e849"}} +17s
  pw:protocol ◀ RECV {"method":"Browser.detachedFromTarget","params":{"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d","targetId":"44490d93-52b1-4ba7-b97a-6d2f00a70676"}} +8ms
  pw:api <= browserContext.newPage failed +14ms
  pw:protocol ◀ RECV {"id":11,"sessionId":"9fbb1933-5133-47c2-abe4-900882a8d45d","error":{"message":"Failed \"addScriptToEvaluateOnNewDocument\": connector 
for namespace \"page\" in channel \"browser::page[44490d93-52b1-4ba7-b97a-6d2f00a70676]\" is disposed.","data":"_rejectCallbacksFromConnector@chrome://juggler/content/SimpleChannel.js:81:25\ndispose@chrome://juggler/content/SimpleChannel.js:92:27\ndispose@chrome://juggler/content/protocol/PageHandler.js:146:23\n_dispose@chrome://juggler/content/protocol/Dispatcher.js:113:21\ndestroySession@chrome://juggler/content/protocol/Dispatcher.js:34:13\n_onTargetDestroyed@chrome://juggler/content/protocol/BrowserHandler.js:113:22\nhandlerWrapper@chrome://juggler/content/Helper.js:37:51\nemit@resource://gre/modules/EventEmitter.jsm:160:20\ndispose@chrome://juggler/content/TargetRegistry.js:642:20\nonTabCloseListener@chrome://juggler/content/TargetRegistry.js:189:18\nonCloseWindow@chrome://juggler/content/TargetRegistry.js:240:27\n"}} +12ms
  pw:protocol ◀ RECV {"id":12} +0ms
  pw:api <= browserContext.close succeeded +8ms

----------------------------------------------------------------------------------------------------

  Slow test: src\specs\hello_world.spec.ts (20s)

  1 failed
    src\specs\hello_world.spec.ts:2:1 › Sample Test @sample ========================================

@aslushnikov
Copy link
Collaborator

@sureshahead does it run if you try running headless, e.g. removing the headless: false option?

@sureshahead
Copy link
Author

@aslushnikov : Tried with headless and same error. Below is the error log.

`npx playwright test --grep=@sample
Using config at C:\Users\surr\code\automation\cmit_hackathon\casemgmtnodeweb\test\functional\pwframework\playwright.config.ts

Running 1 test using 1 worker

 src\specs\hello_world.spec.ts:3:1 › Sample Test @sample

pw:api => browserType.launch started +0ms
pw:browser C:\Users\surr\AppData\Local\ms-playwright\firefox-1295\firefox\firefox.exe -no-remote -headless -profile C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-s8SuVr -juggler-pipe -silent +0ms
pw:browser pid=40548 +11ms
pw:protocol SEND ► {"id":1,"method":"Browser.enable","params":{"attachToDefaultContext":false}} +0ms
pw:protocol SEND ► {"id":2,"method":"Browser.getInfo"} +1ms
pw:browser [pid=40548][err] *** You are running in headless mode. +242ms
pw:browser [pid=40548][out] +530ms
pw:browser [pid=40548][out] Juggler listening to the pipe +0ms
pw:protocol ◀ RECV {"id":2,"result":{"version":"Firefox/92.0","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0"}} +897ms
pw:browser [pid=40548][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-s8SuVr\search.json.mozlz4", (void 0))) +133ms
pw:browser [pid=40548][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt (t=10.0481) [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt +220ms
pw:protocol ◀ RECV {"id":1} +746ms
pw:api <= browserType.launch succeeded +2s
pw:api => browser.newContext started +4ms
pw:protocol SEND ► {"id":3,"method":"Browser.createBrowserContext","params":{"removeOnDetach":true}} +9ms
pw:protocol ◀ RECV {"id":3,"result":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}} +2ms
pw:protocol SEND ► {"id":4,"method":"Browser.setDownloadOptions","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","downloadOptions":{"behavior":"cancel","downloadsDir":"C:\Users\surr\AppData\Local\Temp\1\playwright-artifacts-Gpsfgm"}}} +3ms
pw:protocol SEND ► {"id":5,"method":"Browser.setDefaultViewport","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","viewport":{"viewportSize":{"width":1280,"height":720},"deviceScaleFactor":1}}} +1ms
pw:protocol SEND ► {"id":6,"method":"Browser.setIgnoreHTTPSErrors","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","ignoreHTTPSErrors":true}} +0ms
pw:protocol SEND ► {"id":7,"method":"Browser.setColorScheme","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","colorScheme":"light"}} +0ms
pw:protocol SEND ► {"id":8,"method":"Browser.setReducedMotion","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","reducedMotion":"no-preference"}} +1ms
pw:protocol SEND ► {"id":9,"method":"Browser.setForcedColors","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","forcedColors":"none"}}
+0ms
pw:protocol ◀ RECV {"id":4} +1ms
pw:protocol ◀ RECV {"id":5} +1ms
pw:protocol ◀ RECV {"id":6} +0ms
pw:protocol ◀ RECV {"id":7} +1ms
pw:protocol ◀ RECV {"id":8} +0ms
pw:protocol ◀ RECV {"id":9} +0ms
pw:api <= browser.newContext succeeded +19ms
✘ src\specs\hello_world.spec.ts:3:1 › Sample Test @sample (50s)
pw:protocol SEND ► {"id":10,"method":"Browser.newPage","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}} +11ms
pw:protocol ◀ RECV {"method":"Browser.attachedToTarget","params":{"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c","targetInfo":{"targetId":"69acab41-166c-4021-bb5e-e2e7814b9543","type":"page","browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}}} +305ms
pw:protocol SEND ► {"method":"Page.addScriptToEvaluateOnNewDocument","params":{"script":"","worldName":"playwright_utility_world"},"id":11,"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c"} +2ms
pw:protocol ◀ RECV {"id":10,"result":{"targetId":"69acab41-166c-4021-bb5e-e2e7814b9543"}} +191ms
pw:browser [pid=40548][out] console.error: Region.jsm: "Error fetching region" (new TypeError("NetworkError when attempting to fetch resource.", "chrome://juggler/content/NetworkObserver.js", 566)) +3s
pw:browser [pid=40548][out] console.error: Region.jsm: "Failed to fetch region" (new Error("NO_RESULT", "resource://gre/modules/Region.jsm", 419)) +0ms
pw:api => browserContext.close started +48s
pw:protocol SEND ► {"id":12,"method":"Browser.removeBrowserContext","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}} +47s
pw:protocol ◀ RECV {"method":"Browser.detachedFromTarget","params":{"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c","targetId":"69acab41-166c-4021-bb5e-e2e7814b9543"}} +7ms
pw:api <= browserContext.newPage failed +11ms
pw:protocol ◀ RECV {"id":11,"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c","error":{"message":"Failed "addScriptToEvaluateOnNewDocument": connector
for namespace "page" in channel "browser::page[69acab41-166c-4021-bb5e-e2e7814b9543]" is disposed.","data":"rejectCallbacksFromConnector@chrome://juggler/content/SimpleChannel.js:81:25\ndispose@chrome://juggler/content/SimpleChannel.js:92:27\ndispose@chrome://juggler/content/protocol/PageHandler.js:146:23\n_dispose@chrome://juggler/content/protocol/Dispatcher.js:113:21\ndestroySession@chrome://juggler/content/protocol/Dispatcher.js:34:13\n_onTargetDestroyed@chrome://juggler/content/protocol/BrowserHandler.js:113:22\nhandlerWrapper@chrome://juggler/content/Helper.js:37:51\nemit@resource://gre/modules/EventEmitter.jsm:160:20\ndispose@chrome://juggler/content/TargetRegistry.js:642:20\nonTabCloseListener@chrome://juggler/content/TargetRegistry.js:189:18\nonCloseWindow@chrome://juggler/content/TargetRegistry.js:240:27\n"}} +4ms
pw:protocol ◀ RECV {"id":12} +0ms
pw:api <= browserContext.close succeeded +1ms
pw:api => browser.close started +4ms
pw:browser [pid=40548] +46s
pw:browser [pid=40548][err] JavaScript error: resource:///modules/Interactions.jsm, line 230: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIUserIdleService.removeIdleObserver] +21ms
pw:browser [pid=40548][err] +237ms
pw:browser [pid=40548][err] ###!!! [Parent][MessageChannel] Error: (msgtype=0x930001,name=PTexture::Msg___delete
_) Channel closing: too late to send/recv, messages will be lost +1ms
pw:browser [pid=40548][err] +0ms
pw:browser [pid=40548][err] +0ms
pw:browser [pid=40548][err] ###!!! [Parent][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost +0ms
pw:browser [pid=40548][err] +0ms
pw:browser [pid=40548] +134ms
pw:browser [pid=40548] starting temporary directories cleanup +0ms
pw:browser [pid=40548] finished temporary directories cleanup +22ms
pw:browser [pid=40548] +0ms
pw:api <= browser.close succeeded +415ms

  1. src\specs\hello_world.spec.ts:3:1 › Sample Test @sample =======================================
Timeout of 50000ms exceeded.

Pending operations:
  - browserContext.newPage at node_modules\@playwright\test\lib\test\index.js:407:29

browserContext.newPage: Page closed

    at Object.page [as fn] (C:\Users\surr\code\automation\cmit_hackathon\casemgmtnodeweb\test\functional\pwframework\node_modules\@playwright\test\lib\test\index.js:407:29)
    at Fixture.setup (C:\Users\surr\code\automation\cmit_hackathon\casemgmtnodeweb\test\functional\pwframework\node_modules\@playwright\test\lib\test\fixtures.js:73:73)
    at FixtureRunner.setupFixtureForRegistration (C:\Users\surr\code\automation\cmit_hackathon\casemgmtnodeweb\test\functional\pwframework\node_modules\@playwright\test\lib\test\fixtures.js:312:5)
    at FixtureRunner.resolveParametersAndRunHookOrTest (C:\Users\surr\code\automation\cmit_hackathon\casemgmtnodeweb\test\functional\pwframework\node_modules\@playwright\test\lib\test\fixtures.js:297:23)
    at WorkerRunner._runTestWithBeforeHooks (C:\Users\surr\code\automation\cmit_hackathon\casemgmtnodeweb\test\functional\pwframework\node_modules\@playwright\test\lib\test\workerRunner.js:449:7)

--- Test output ------------------------------------------------------------------------------------

pw:api => browserType.launch started +0ms
pw:browser C:\Users\surr\AppData\Local\ms-playwright\firefox-1295\firefox\firefox.exe -no-remote -headless -profile C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-s8SuVr -juggler-pipe -silent +0ms
pw:browser pid=40548 +11ms
pw:protocol SEND ► {"id":1,"method":"Browser.enable","params":{"attachToDefaultContext":false}} +0ms
pw:protocol SEND ► {"id":2,"method":"Browser.getInfo"} +1ms
pw:browser [pid=40548][err] *** You are running in headless mode. +242ms
pw:browser [pid=40548][out] +530ms
pw:browser [pid=40548][out] Juggler listening to the pipe +0ms
pw:protocol ◀ RECV {"id":2,"result":{"version":"Firefox/92.0","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0"}} +897ms
pw:browser [pid=40548][out] console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at C:\Users\surr\AppData\Local\Temp\1\playwright_firefoxdev_profile-s8SuVr\search.json.mozlz4", (void 0))) +133ms
pw:browser [pid=40548][out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt (t=10.0481) [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt +220ms
pw:protocol ◀ RECV {"id":1} +746ms
pw:api <= browserType.launch succeeded +2s
pw:api => browser.newContext started +4ms
pw:protocol SEND ► {"id":3,"method":"Browser.createBrowserContext","params":{"removeOnDetach":true}} +9ms
pw:protocol ◀ RECV {"id":3,"result":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}} +2ms
pw:protocol SEND ► {"id":4,"method":"Browser.setDownloadOptions","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","downloadOptions":{"behavior":"cancel","downloadsDir":"C:\Users\surr\AppData\Local\Temp\1\playwright-artifacts-Gpsfgm"}}} +3ms
pw:protocol SEND ► {"id":5,"method":"Browser.setDefaultViewport","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","viewport":{"viewportSize":{"width":1280,"height":720},"deviceScaleFactor":1}}} +1ms
pw:protocol SEND ► {"id":6,"method":"Browser.setIgnoreHTTPSErrors","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","ignoreHTTPSErrors":true}} +0ms
pw:protocol SEND ► {"id":7,"method":"Browser.setColorScheme","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","colorScheme":"light"}} +0ms
pw:protocol SEND ► {"id":8,"method":"Browser.setReducedMotion","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","reducedMotion":"no-preference"}} +1ms
pw:protocol SEND ► {"id":9,"method":"Browser.setForcedColors","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8","forcedColors":"none"}}
+0ms
pw:protocol ◀ RECV {"id":4} +1ms
pw:protocol ◀ RECV {"id":5} +1ms
pw:protocol ◀ RECV {"id":6} +0ms
pw:protocol ◀ RECV {"id":7} +1ms
pw:protocol ◀ RECV {"id":8} +0ms
pw:protocol ◀ RECV {"id":9} +0ms
pw:api <= browser.newContext succeeded +19ms
pw:api => browserContext.newPage started +3ms
pw:protocol SEND ► {"id":10,"method":"Browser.newPage","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}} +11ms
pw:protocol ◀ RECV {"method":"Browser.attachedToTarget","params":{"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c","targetInfo":{"targetId":"69acab41-166c-4021-bb5e-e2e7814b9543","type":"page","browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}}} +305ms
pw:protocol SEND ► {"method":"Page.addScriptToEvaluateOnNewDocument","params":{"script":"","worldName":"playwright_utility_world"},"id":11,"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c"} +2ms
pw:protocol ◀ RECV {"id":10,"result":{"targetId":"69acab41-166c-4021-bb5e-e2e7814b9543"}} +191ms
pw:browser [pid=40548][out] console.error: Region.jsm: "Error fetching region" (new TypeError("NetworkError when attempting to fetch resource.", "chrome://juggler/content/NetworkObserver.js", 566)) +3s
pw:browser [pid=40548][out] console.error: Region.jsm: "Failed to fetch region" (new Error("NO_RESULT", "resource://gre/modules/Region.jsm", 419)) +0ms
pw:api => browserContext.close started +48s
pw:protocol SEND ► {"id":12,"method":"Browser.removeBrowserContext","params":{"browserContextId":"adbceca4-1e3d-4a43-9207-346a525eabe8"}} +47s
pw:protocol ◀ RECV {"method":"Browser.detachedFromTarget","params":{"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c","targetId":"69acab41-166c-4021-bb5e-e2e7814b9543"}} +7ms
pw:api <= browserContext.newPage failed +11ms
pw:protocol ◀ RECV {"id":11,"sessionId":"d2052c4b-9ced-42f3-ab7f-3429936c021c","error":{"message":"Failed "addScriptToEvaluateOnNewDocument": connector
for namespace "page" in channel "browser::page[69acab41-166c-4021-bb5e-e2e7814b9543]" is disposed.","data":"_rejectCallbacksFromConnector@chrome://juggler/content/SimpleChannel.js:81:25\ndispose@chrome://juggler/content/SimpleChannel.js:92:27\ndispose@chrome://juggler/content/protocol/PageHandler.js:146:23\n_dispose@chrome://juggler/content/protocol/Dispatcher.js:113:21\ndestroySession@chrome://juggler/content/protocol/Dispatcher.js:34:13\n_onTargetDestroyed@chrome://juggler/content/protocol/BrowserHandler.js:113:22\nhandlerWrapper@chrome://juggler/content/Helper.js:37:51\nemit@resource://gre/modules/EventEmitter.jsm:160:20\ndispose@chrome://juggler/content/TargetRegistry.js:642:20\nonTabCloseListener@chrome://juggler/content/TargetRegistry.js:189:18\nonCloseWindow@chrome://juggler/content/TargetRegistry.js:240:27\n"}} +4ms
pw:protocol ◀ RECV {"id":12} +0ms
pw:api <= browserContext.close succeeded +1ms


Slow test: src\specs\hello_world.spec.ts (50s)

1 failed
src\specs\hello_world.spec.ts:3:1 › Sample Test @sample ========================================`

@aslushnikov
Copy link
Collaborator

This looks like some configuration of the windows machine that messes things up.

If you can come up with a repro that we can run and see things failing, we'll be happy to fix this! Otherwise, this is not actionable and I have to close this.

Please feel free to re-file with a repro!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants