@vezham/config 26.0.0-beta.3 → 26.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/integrations/playwright/browser-health.d.ts +11 -0
- package/dist/lib/integrations/playwright/browser-health.d.ts.map +1 -0
- package/dist/lib/integrations/playwright/browser-health.js +13 -0
- package/dist/lib/integrations/playwright/test.d.ts.map +1 -1
- package/dist/lib/integrations/playwright/test.js +17 -3
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type ConsoleError = {
|
|
2
|
+
text: string;
|
|
3
|
+
url: string;
|
|
4
|
+
};
|
|
5
|
+
type ResourceContext = {
|
|
6
|
+
documentUrls: ReadonlySet<string>;
|
|
7
|
+
successfulResourceUrls: ReadonlySet<string>;
|
|
8
|
+
};
|
|
9
|
+
export declare const isThirdPartyCookieDiagnostic: (error: ConsoleError, { documentUrls, successfulResourceUrls }: ResourceContext) => boolean;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=browser-health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-health.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/playwright/browser-health.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACjD,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC5C,CAAA;AAMD,eAAO,MAAM,4BAA4B,GACvC,OAAO,YAAY,EACnB,0CAA0C,eAAe,YA4B1D,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/lib/integrations/playwright/browser-health.ts
|
|
2
|
+
var invalidCookieDomain = /^Cookie (?:“[^”\r\n]+”|"[^"\r\n]+") has been rejected for invalid domain\.$/;
|
|
3
|
+
var isThirdPartyCookieDiagnostic = (error, { documentUrls, successfulResourceUrls }) => {
|
|
4
|
+
const wrapped = /^\[JavaScript Error: "([^\r\n]*)" \{file: "([^"]*)" line: \d+\}\]$/.exec(error.text);
|
|
5
|
+
const message = wrapped?.[1] ?? error.text;
|
|
6
|
+
const resourceUrl = wrapped?.[2] || error.url;
|
|
7
|
+
if (!invalidCookieDomain.test(message) || !URL.canParse(resourceUrl) || error.url && error.url !== resourceUrl || !successfulResourceUrls.has(resourceUrl)) return false;
|
|
8
|
+
const resource = new URL(resourceUrl);
|
|
9
|
+
const documents = [...documentUrls].filter((url) => URL.canParse(url)).map((url) => new URL(url)).filter((url) => url.protocol === "http:" || url.protocol === "https:");
|
|
10
|
+
return (resource.protocol === "http:" || resource.protocol === "https:") && documents.length > 0 && documents.every((document) => document.hostname !== resource.hostname);
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { isThirdPartyCookieDiagnostic };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/playwright/test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/playwright/test.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI;mBAAgC,IAAI;wGA0DnD,CAAA;AAEF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { isThirdPartyCookieDiagnostic } from "./browser-health.js";
|
|
1
2
|
import { expect, expect as expect$1, test as test$1 } from "@playwright/test";
|
|
2
3
|
//#region src/lib/integrations/playwright/test.ts
|
|
3
|
-
var test = test$1.extend({ browserHealth: [async ({ page }, use) => {
|
|
4
|
+
var test = test$1.extend({ browserHealth: [async ({ page, baseURL }, use, testInfo) => {
|
|
4
5
|
const runtimeErrors = [];
|
|
5
6
|
const consoleErrors = [];
|
|
6
7
|
const notFoundDocuments = /* @__PURE__ */ new Set();
|
|
8
|
+
const documentUrls = new Set(baseURL ? [baseURL] : []);
|
|
9
|
+
const successfulResourceUrls = /* @__PURE__ */ new Set();
|
|
7
10
|
page.on("pageerror", (error) => runtimeErrors.push(error.message));
|
|
8
11
|
page.on("console", (message) => {
|
|
9
12
|
if (message.type() === "error") consoleErrors.push({
|
|
@@ -13,10 +16,21 @@ var test = test$1.extend({ browserHealth: [async ({ page }, use) => {
|
|
|
13
16
|
});
|
|
14
17
|
page.on("response", (response) => {
|
|
15
18
|
const request = response.request();
|
|
16
|
-
if (
|
|
19
|
+
if (request.isNavigationRequest() && request.frame() === page.mainFrame()) {
|
|
20
|
+
documentUrls.add(response.url());
|
|
21
|
+
if (response.status() === 404) notFoundDocuments.add(response.url());
|
|
22
|
+
} else if (!request.isNavigationRequest() && response.ok()) successfulResourceUrls.add(response.url());
|
|
17
23
|
});
|
|
18
24
|
await use();
|
|
19
|
-
const
|
|
25
|
+
const cookieDiagnostics = consoleErrors.filter((error) => isThirdPartyCookieDiagnostic(error, {
|
|
26
|
+
documentUrls,
|
|
27
|
+
successfulResourceUrls
|
|
28
|
+
}));
|
|
29
|
+
if (cookieDiagnostics.length > 0) await testInfo.attach("browser-cookie-diagnostics", {
|
|
30
|
+
body: JSON.stringify(cookieDiagnostics, null, 2),
|
|
31
|
+
contentType: "application/json"
|
|
32
|
+
});
|
|
33
|
+
const unexpectedErrors = consoleErrors.filter((error) => !cookieDiagnostics.includes(error) && !(notFoundDocuments.has(error.url) && /^Failed to load resource: the server responded with a status of 404(?: \((?:Not Found)?\))?$/.test(error.text)));
|
|
20
34
|
expect$1([...runtimeErrors, ...unexpectedErrors.map((error) => error.text)]).toEqual([]);
|
|
21
35
|
}, { auto: true }] });
|
|
22
36
|
//#endregion
|