@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.
Files changed (29) hide show
  1. package/RELEASE.md +11 -9
  2. package/dist/ai/export.d.ts +1 -7
  3. package/dist/ai/extractStructuredData.js +1 -1
  4. package/dist/ai/extractStructuredDataUsingAi.js +23 -2
  5. package/dist/ai/extractionHelpers/validateSchema.js +34 -2
  6. package/dist/ai/index.d.ts +1 -7
  7. package/dist/ai/tests/testExtractStructuredData.spec.js +150 -18
  8. package/dist/ai/tests/testIsPageLoaded.spec.js +1 -1
  9. package/dist/ai/types/models.js +2 -5
  10. package/dist/ai/validators.js +1 -1
  11. package/dist/common/aiModelsValidations.js +2 -4
  12. package/dist/helpers/downloadFile.js +1 -3
  13. package/dist/helpers/frame_utils/checkFrameAllowsAsyncScripts.js +20 -0
  14. package/dist/helpers/frame_utils/findAllIframes.js +4 -1
  15. package/dist/helpers/frame_utils/tests/testFindAllIframes.spec.js +43 -0
  16. package/dist/helpers/tests/testDownloadFile.spec.js +3 -4
  17. package/dist/helpers/tests/testResolveUrl.spec.js +4 -4
  18. package/dist/helpers/tests/testValidateDataUsingSchema.spec.js +1041 -4
  19. package/dist/helpers/tests/testWithDomSettledWait.spec.js +23 -0
  20. package/dist/helpers/tests/testWithNetworkIdleWait.spec.js +1 -1
  21. package/dist/helpers/uploadFileToS3.js +6 -0
  22. package/dist/helpers/utils/getS3Client.js +2 -2
  23. package/dist/helpers/validateDataUsingSchema.js +93 -7
  24. package/dist/helpers/waitForDomSettled.js +17 -8
  25. package/dist/optimized-extractors/listExtractionHelpers/__tests__/testArrayExtractorFromLocator.spec.js +1 -1
  26. package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromLocator.spec.js +1 -1
  27. package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromPage.spec.js +1 -1
  28. package/dist/optimized-extractors/types/aiModelsValidation.js +1 -3
  29. 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
- (0, _extendedTest.describe)("TestNotInGeneration", () => {
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: false,
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: false,
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: 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: 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: 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: page
298
+ page
299
299
  };
300
300
  await (0, _extendedTest.expect)(async () => {
301
301
  await (0, _.resolveUrl)(invalidParams);