@intuned/browser-dev 0.1.5-dev.1 → 0.1.6-dev.0
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/RELEASE.md +11 -9
- package/dist/ai/export.d.ts +1 -7
- package/dist/ai/extractStructuredData.js +1 -1
- package/dist/ai/extractStructuredDataUsingAi.js +23 -2
- package/dist/ai/extractionHelpers/validateSchema.js +34 -2
- package/dist/ai/index.d.ts +1 -7
- package/dist/ai/tests/testExtractStructuredData.spec.js +150 -18
- package/dist/ai/tests/testIsPageLoaded.spec.js +1 -1
- package/dist/ai/types/models.js +2 -5
- package/dist/ai/validators.js +1 -1
- package/dist/common/aiModelsValidations.js +2 -4
- package/dist/helpers/downloadFile.js +1 -3
- package/dist/helpers/frame_utils/checkFrameAllowsAsyncScripts.js +20 -0
- package/dist/helpers/frame_utils/findAllIframes.js +4 -1
- package/dist/helpers/frame_utils/tests/testFindAllIframes.spec.js +43 -0
- package/dist/helpers/tests/testDownloadFile.spec.js +3 -4
- package/dist/helpers/tests/testResolveUrl.spec.js +4 -4
- package/dist/helpers/tests/testValidateDataUsingSchema.spec.js +1041 -4
- package/dist/helpers/tests/testWithDomSettledWait.spec.js +23 -0
- package/dist/helpers/tests/testWithNetworkIdleWait.spec.js +1 -1
- package/dist/helpers/uploadFileToS3.js +6 -0
- package/dist/helpers/utils/getS3Client.js +2 -2
- package/dist/helpers/validateDataUsingSchema.js +93 -7
- package/dist/helpers/waitForDomSettled.js +17 -8
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/testArrayExtractorFromLocator.spec.js +1 -1
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromLocator.spec.js +1 -1
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromPage.spec.js +1 -1
- package/dist/optimized-extractors/types/aiModelsValidation.js +1 -3
- package/package.json +4 -3
|
@@ -167,4 +167,47 @@ var _findAllIframes = require("../findAllIframes");
|
|
|
167
167
|
(0, _extendedTest.expect)(node.frame).toBeDefined();
|
|
168
168
|
}
|
|
169
169
|
});
|
|
170
|
+
(0, _extendedTest.test)("should correctly identify sandboxed iframes with allowsAsyncScripts flag", async () => {
|
|
171
|
+
var _sandboxedNode, _normalNode;
|
|
172
|
+
await page.goto(`data:text/html,
|
|
173
|
+
<html>
|
|
174
|
+
<body>
|
|
175
|
+
<h1>Main Content</h1>
|
|
176
|
+
<iframe id="sandboxed-iframe"
|
|
177
|
+
sandbox="allow-same-origin"
|
|
178
|
+
srcdoc="<html><body><h2>Sandboxed Iframe</h2></body></html>"
|
|
179
|
+
width="300"
|
|
180
|
+
height="200">
|
|
181
|
+
</iframe>
|
|
182
|
+
<iframe id="normal-iframe"
|
|
183
|
+
srcdoc="<html><body><h2>Normal Iframe</h2></body></html>"
|
|
184
|
+
width="300"
|
|
185
|
+
height="200">
|
|
186
|
+
</iframe>
|
|
187
|
+
</body>
|
|
188
|
+
</html>`, {
|
|
189
|
+
waitUntil: "domcontentloaded"
|
|
190
|
+
});
|
|
191
|
+
const iframeNodes = await (0, _findAllIframes.findAllIframes)(page);
|
|
192
|
+
(0, _extendedTest.expect)(iframeNodes.length).toBe(2);
|
|
193
|
+
let sandboxedNode;
|
|
194
|
+
let normalNode;
|
|
195
|
+
for (const node of iframeNodes) {
|
|
196
|
+
try {
|
|
197
|
+
const iframeElement = await node.frame.frameElement();
|
|
198
|
+
const iframeId = await iframeElement.getAttribute("id");
|
|
199
|
+
if (iframeId === "sandboxed-iframe") {
|
|
200
|
+
sandboxedNode = node;
|
|
201
|
+
} else if (iframeId === "normal-iframe") {
|
|
202
|
+
normalNode = node;
|
|
203
|
+
}
|
|
204
|
+
} catch (error) {
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
(0, _extendedTest.expect)(sandboxedNode).toBeDefined();
|
|
209
|
+
(0, _extendedTest.expect)((_sandboxedNode = sandboxedNode) === null || _sandboxedNode === void 0 ? void 0 : _sandboxedNode.allowsAsyncScripts).toBe(false);
|
|
210
|
+
(0, _extendedTest.expect)(normalNode).toBeDefined();
|
|
211
|
+
(0, _extendedTest.expect)((_normalNode = normalNode) === null || _normalNode === void 0 ? void 0 : _normalNode.allowsAsyncScripts).toBe(true);
|
|
212
|
+
});
|
|
170
213
|
});
|
|
@@ -66,14 +66,14 @@ async function createUserDirWithPreferences() {
|
|
|
66
66
|
await (0, _promises.writeFile)(preferencesPath, JSON.stringify(preferences));
|
|
67
67
|
return (0, _path.resolve)(userDir);
|
|
68
68
|
}
|
|
69
|
-
|
|
69
|
+
_extendedTest.describe.skip("TestNotInGeneration", () => {
|
|
70
70
|
let context;
|
|
71
71
|
let page;
|
|
72
72
|
(0, _extendedTest.beforeAll)(async () => {
|
|
73
73
|
const dir = await createUserDirWithPreferences();
|
|
74
74
|
process.env.MODE = "";
|
|
75
75
|
context = await _playwrightCore.chromium.launchPersistentContext(dir, {
|
|
76
|
-
headless:
|
|
76
|
+
headless: true,
|
|
77
77
|
args: ["--no-first-run", "--disable-sync", "--disable-translate", "--disable-features=TranslateUI", "--disable-features=NetworkService", "--lang=en", "--disable-blink-features=AutomationControlled"],
|
|
78
78
|
acceptDownloads: true
|
|
79
79
|
});
|
|
@@ -105,7 +105,6 @@ async function createUserDirWithPreferences() {
|
|
|
105
105
|
});
|
|
106
106
|
const path = await downloadedImage.path();
|
|
107
107
|
(0, _extendedTest.expect)(path).toBeDefined();
|
|
108
|
-
(0, _extendedTest.expect)(String(path)).toContain("/var/folders/");
|
|
109
108
|
});
|
|
110
109
|
(0, _extendedTest.test)("should upload image to s3", async () => {
|
|
111
110
|
await page.setContent(content);
|
|
@@ -163,7 +162,7 @@ async function createUserDirWithPreferences() {
|
|
|
163
162
|
process.env.MODE = "generate_code";
|
|
164
163
|
const dir = await createUserDirWithPreferences();
|
|
165
164
|
context = await _playwrightCore.chromium.launchPersistentContext(dir, {
|
|
166
|
-
headless:
|
|
165
|
+
headless: true,
|
|
167
166
|
userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
|
|
168
167
|
args: ["--no-first-run", "--disable-sync", "--disable-translate", "--disable-features=TranslateUI", "--disable-features=NetworkService", "--lang=en", "--disable-blink-features=AutomationControlled"],
|
|
169
168
|
acceptDownloads: true
|
|
@@ -81,7 +81,7 @@ var _playwright = require("playwright");
|
|
|
81
81
|
await page.goto("https://mhtml-viewer.com/some/path");
|
|
82
82
|
const result = await (0, _.resolveUrl)({
|
|
83
83
|
url: "/new/path",
|
|
84
|
-
page
|
|
84
|
+
page
|
|
85
85
|
});
|
|
86
86
|
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/new/path");
|
|
87
87
|
} finally {
|
|
@@ -98,7 +98,7 @@ var _playwright = require("playwright");
|
|
|
98
98
|
const fullUrl = "https://other-site.com/different/path";
|
|
99
99
|
const result = await (0, _.resolveUrl)({
|
|
100
100
|
url: fullUrl,
|
|
101
|
-
page
|
|
101
|
+
page
|
|
102
102
|
});
|
|
103
103
|
(0, _extendedTest.expect)(result).toBe(fullUrl);
|
|
104
104
|
} finally {
|
|
@@ -114,7 +114,7 @@ var _playwright = require("playwright");
|
|
|
114
114
|
await page.goto("https://mhtml-viewer.com/folder/page?param=value#section");
|
|
115
115
|
const result = await (0, _.resolveUrl)({
|
|
116
116
|
url: "/new/path",
|
|
117
|
-
page
|
|
117
|
+
page
|
|
118
118
|
});
|
|
119
119
|
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/new/path");
|
|
120
120
|
} finally {
|
|
@@ -295,7 +295,7 @@ var _playwright = require("playwright");
|
|
|
295
295
|
const invalidParams = {
|
|
296
296
|
url: "/test",
|
|
297
297
|
baseUrl: "https://example.com",
|
|
298
|
-
page
|
|
298
|
+
page
|
|
299
299
|
};
|
|
300
300
|
await (0, _extendedTest.expect)(async () => {
|
|
301
301
|
await (0, _.resolveUrl)(invalidParams);
|