@intuned/browser-dev 2.2.3-unify-sdks.20
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/.babelrc +21 -0
- package/.eslintignore +10 -0
- package/.eslintrc.js +39 -0
- package/LICENSE +43 -0
- package/dist/ai-extractors/AnthropicClient/index.js +23 -0
- package/dist/ai-extractors/export.d.js +5 -0
- package/dist/ai-extractors/export.d.ts +422 -0
- package/dist/ai-extractors/extractStructuredData.js +79 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/constants.js +7 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/errors.js +42 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStructuredDataUsingClaude.js +149 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStructuredDataUsingGoogle.js +37 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStructuredDataUsingOpenAi.js +144 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStrucutredDataUsingAiInstance.js +123 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/index.js +55 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/isItemTableHeaderOrFooter.js +96 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/screenshotHelpers.js +55 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/types.js +5 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/utils.js +53 -0
- package/dist/ai-extractors/extractionHelpers/types.js +5 -0
- package/dist/ai-extractors/fileExtractors.js +176 -0
- package/dist/ai-extractors/index.js +31 -0
- package/dist/ai-extractors/jsonSchema.d.js +5 -0
- package/dist/ai-extractors/jsonSchema.d.ts +49 -0
- package/dist/ai-extractors/openAiClients/index.js +23 -0
- package/dist/ai-extractors/validators.js +239 -0
- package/dist/browser/ai/export.d.js +3 -0
- package/dist/browser/ai/export.d.ts +587 -0
- package/dist/browser/ai/extractMarkdown.js +15 -0
- package/dist/browser/ai/extractStructuredData.js +231 -0
- package/dist/browser/ai/extractStructuredDataUsingAi.js +140 -0
- package/dist/browser/ai/extractionHelpers/screenshotHelpers.js +55 -0
- package/dist/browser/ai/extractionHelpers/validateSchema.js +148 -0
- package/dist/browser/ai/index.d.ts +587 -0
- package/dist/browser/ai/index.js +19 -0
- package/dist/browser/ai/isPageLoaded.js +67 -0
- package/dist/browser/ai/prompt.js +39 -0
- package/dist/browser/ai/tests/testCheckAllTypesAreStrings.spec.js +143 -0
- package/dist/browser/ai/tests/testExtractStructuredData.spec.js +622 -0
- package/dist/browser/ai/tools/index.js +48 -0
- package/dist/browser/ai/types/errors.js +67 -0
- package/dist/browser/ai/types/models.js +45 -0
- package/dist/browser/ai/types/types.js +48 -0
- package/dist/browser/ai/validators.js +136 -0
- package/dist/common/Logger/index.js +60 -0
- package/dist/common/Logger/types.js +5 -0
- package/dist/common/SdkError.js +50 -0
- package/dist/common/aiModelsValidations.js +50 -0
- package/dist/common/browser_scripts.js +2596 -0
- package/dist/common/ensureBrowserScripts.js +17 -0
- package/dist/common/environmentVariables.js +16 -0
- package/dist/common/eventTracking/getAiTrackingHeaders.js +31 -0
- package/dist/common/eventTracking/getFileTrackingHeaders.js +23 -0
- package/dist/common/extendedTest.js +148 -0
- package/dist/common/extractionHelpers.js +19 -0
- package/dist/common/formatZodError.js +18 -0
- package/dist/common/fuzzySearch/fuzzySearch.test.js +250 -0
- package/dist/common/fuzzySearch/levenshtein-search.js +298 -0
- package/dist/common/fuzzySearch/utils.js +23 -0
- package/dist/common/getModelProvider.js +18 -0
- package/dist/common/getSimplifiedHtml.js +122 -0
- package/dist/common/hashObject.js +32 -0
- package/dist/common/html2markdown/convertElementToMarkdown.js +469 -0
- package/dist/common/html2markdown/index.js +19 -0
- package/dist/common/jwtTokenManager.js +18 -0
- package/dist/common/loadRuntime.js +16 -0
- package/dist/common/locatorHelpers.js +41 -0
- package/dist/common/matching/collectStrings.js +32 -0
- package/dist/common/matching/levenshtein.js +40 -0
- package/dist/common/matching/matching.js +317 -0
- package/dist/common/matching/types.js +1 -0
- package/dist/common/noEmpty.js +9 -0
- package/dist/common/saveSnapshotWithExamples.js +60 -0
- package/dist/common/tests/testEnsureBrowserScript.spec.js +31 -0
- package/dist/common/xpathMapping.js +107 -0
- package/dist/helpers/downloadFile.js +125 -0
- package/dist/helpers/export.d.js +1 -0
- package/dist/helpers/export.d.ts +1294 -0
- package/dist/helpers/extractMarkdown.js +35 -0
- package/dist/helpers/filterEmptyValues.js +54 -0
- package/dist/helpers/gotoUrl.js +93 -0
- package/dist/helpers/index.d.ts +1294 -0
- package/dist/helpers/index.js +115 -0
- package/dist/helpers/processDate.js +25 -0
- package/dist/helpers/resolveUrl.js +63 -0
- package/dist/helpers/sanitizeHtml.js +73 -0
- package/dist/helpers/saveFileToS3.js +46 -0
- package/dist/helpers/scrollToLoadContent.js +50 -0
- package/dist/helpers/tests/extendedTest.js +130 -0
- package/dist/helpers/tests/testDownloadFile.spec.js +197 -0
- package/dist/helpers/tests/testFilterEmptyValues.spec.js +151 -0
- package/dist/helpers/tests/testGoToUrl.spec.js +37 -0
- package/dist/helpers/tests/testIsPageLoaded.spec.js +285 -0
- package/dist/helpers/tests/testProcessDate.spec.js +13 -0
- package/dist/helpers/tests/testResolveUrl.spec.js +341 -0
- package/dist/helpers/tests/testSanitizeHtml.spec.js +330 -0
- package/dist/helpers/tests/testSimplifyHtml.spec.js +251 -0
- package/dist/helpers/tests/testValidateDataUsingSchema.spec.js +380 -0
- package/dist/helpers/tests/testWaitForDomSettled.spec.js +169 -0
- package/dist/helpers/tests/testWaitForNetworkIdle.spec.js +115 -0
- package/dist/helpers/types/Attachment.js +81 -0
- package/dist/helpers/types/CustomTypeRegistry.js +48 -0
- package/dist/helpers/types/RunEnvironment.js +18 -0
- package/dist/helpers/types/ValidationError.js +17 -0
- package/dist/helpers/types/index.js +51 -0
- package/dist/helpers/uploadFileToS3.js +153 -0
- package/dist/helpers/utils/getS3Client.js +21 -0
- package/dist/helpers/utils/index.js +73 -0
- package/dist/helpers/utils/isDownload.js +10 -0
- package/dist/helpers/utils/isGenerateCodeMode.js +9 -0
- package/dist/helpers/utils/isLocator.js +9 -0
- package/dist/helpers/utils/jwtTokenManager.js +18 -0
- package/dist/helpers/validateDataUsingSchema.js +119 -0
- package/dist/helpers/waitForDomSettled.js +182 -0
- package/dist/helpers/waitForNetworkIdle.js +191 -0
- package/dist/index.d.js +82 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +84 -0
- package/dist/intunedServices/ApiGateway/aiApiGateway.js +87 -0
- package/dist/intunedServices/ApiGateway/factory.js +13 -0
- package/dist/intunedServices/ApiGateway/providers/Anthropic.js +26 -0
- package/dist/intunedServices/ApiGateway/providers/Gemini.js +29 -0
- package/dist/intunedServices/ApiGateway/providers/OpenAI.js +29 -0
- package/dist/intunedServices/ApiGateway/tests/testApiGateway.spec.js +221 -0
- package/dist/intunedServices/ApiGateway/types.js +11 -0
- package/dist/intunedServices/cache/cache.js +61 -0
- package/dist/intunedServices/cache/index.js +12 -0
- package/dist/intunedServices/cache/tests/testCache.spec.js +117 -0
- package/dist/optimized-extractors/common/buildExamplesPrompt.js +12 -0
- package/dist/optimized-extractors/common/buildImagesFromPage.js +55 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingClaude.js +149 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingGoogle.js +37 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingOpenAi.js +145 -0
- package/dist/optimized-extractors/common/extractStrucutredDataUsingAiInstance.js +122 -0
- package/dist/optimized-extractors/common/findTableHeaders.js +175 -0
- package/dist/optimized-extractors/common/index.js +55 -0
- package/dist/optimized-extractors/common/isTableHeaderOrFooter.js +97 -0
- package/dist/optimized-extractors/common/matching/matching.js +212 -0
- package/dist/optimized-extractors/common/matching/matching.test.js +655 -0
- package/dist/optimized-extractors/common/matching/types.js +18 -0
- package/dist/optimized-extractors/common/matching/utils.js +184 -0
- package/dist/optimized-extractors/common/utils.js +58 -0
- package/dist/optimized-extractors/export.d.js +5 -0
- package/dist/optimized-extractors/export.d.ts +397 -0
- package/dist/optimized-extractors/extractArray.js +120 -0
- package/dist/optimized-extractors/extractObject.js +104 -0
- package/dist/optimized-extractors/index.d.ts +397 -0
- package/dist/optimized-extractors/index.js +31 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/dynamicListExtractor.spec.js +312 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/findSetOfXpathsToCreateAnArrayExtractor.test.js +22 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/getContainerElement.test.js +21 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/partOfSameArrayXpath.test.js +42 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/verifyThatAllXpathsArePartOfSameArray.test.js +9 -0
- package/dist/optimized-extractors/listExtractionHelpers/dynamicListExtractor.js +152 -0
- package/dist/optimized-extractors/listExtractionHelpers/errors.js +46 -0
- package/dist/optimized-extractors/listExtractionHelpers/getListMatches.js +14 -0
- package/dist/optimized-extractors/listExtractionHelpers/runAiExtraction.js +240 -0
- package/dist/optimized-extractors/listExtractionHelpers/typesAndSchema.js +5 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/extractPropertiesUsingGPTFromArray.js +277 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/extractStructuredListUsingAi.js +44 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/getListContainerXpath.js +94 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/getRelativeContainerXpathSelector.js +20 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/getSimplifiedHtmlPerListItem.js +21 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/tablesUtils.js +48 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/validateOptions.js +52 -0
- package/dist/optimized-extractors/models/anthropicModel.js +23 -0
- package/dist/optimized-extractors/models/openaiModel.js +23 -0
- package/dist/optimized-extractors/objectExtractionHelpers/AIExtractors.js +73 -0
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/checksumUtils.test.js +103 -0
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromLocator.spec.js +107 -0
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromPage.spec.js +107 -0
- package/dist/optimized-extractors/objectExtractionHelpers/calculateObjectExampleHash.js +28 -0
- package/dist/optimized-extractors/objectExtractionHelpers/captureSnapshot.js +26 -0
- package/dist/optimized-extractors/objectExtractionHelpers/checksumUtils.js +32 -0
- package/dist/optimized-extractors/objectExtractionHelpers/constants.js +7 -0
- package/dist/optimized-extractors/objectExtractionHelpers/dynamicObjectExtractor.js +106 -0
- package/dist/optimized-extractors/objectExtractionHelpers/errors.js +42 -0
- package/dist/optimized-extractors/objectExtractionHelpers/findDomMatches.js +54 -0
- package/dist/optimized-extractors/objectExtractionHelpers/getSimplifiedHtml.js +122 -0
- package/dist/optimized-extractors/objectExtractionHelpers/typesAndSchemas.js +5 -0
- package/dist/optimized-extractors/objectExtractionHelpers/validateDynamicObjectExtractorOptions.js +52 -0
- package/dist/optimized-extractors/types/aiModelsValidation.js +45 -0
- package/dist/optimized-extractors/types/errors.js +42 -0
- package/dist/optimized-extractors/types/jsonSchema.d.js +5 -0
- package/dist/optimized-extractors/types/jsonSchema.d.ts +50 -0
- package/dist/optimized-extractors/types/types.js +5 -0
- package/dist/optimized-extractors/validators.js +152 -0
- package/dist/vite-env.d.js +1 -0
- package/dist/vite-env.d.ts +9 -0
- package/docs.md +14 -0
- package/how-to-run-tests.md +10 -0
- package/intuned-runtime-setup.md +13 -0
- package/package.json +124 -0
- package/tsconfig.eslint.json +5 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _extendedTest = require("./extendedTest");
|
|
4
|
+
var _ = require("..");
|
|
5
|
+
var _playwright = require("playwright");
|
|
6
|
+
(0, _extendedTest.describe)("ResolveUrl Tests", () => {
|
|
7
|
+
(0, _extendedTest.describe)("String URL with base URL tests", () => {
|
|
8
|
+
(0, _extendedTest.test)("relative url simple path", async () => {
|
|
9
|
+
const result = await (0, _.resolveUrl)({
|
|
10
|
+
url: "/path/to/page",
|
|
11
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
12
|
+
});
|
|
13
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/path/to/page");
|
|
14
|
+
});
|
|
15
|
+
(0, _extendedTest.test)("relative url with query", async () => {
|
|
16
|
+
const result = await (0, _.resolveUrl)({
|
|
17
|
+
url: "/search?q=test&page=1",
|
|
18
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
19
|
+
});
|
|
20
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/search?q=test&page=1");
|
|
21
|
+
});
|
|
22
|
+
(0, _extendedTest.test)("relative url with fragment", async () => {
|
|
23
|
+
const result = await (0, _.resolveUrl)({
|
|
24
|
+
url: "/page#section1",
|
|
25
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
26
|
+
});
|
|
27
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/page#section1");
|
|
28
|
+
});
|
|
29
|
+
(0, _extendedTest.test)("relative url with special characters", async () => {
|
|
30
|
+
const result = await (0, _.resolveUrl)({
|
|
31
|
+
url: "/path with spaces/file.html",
|
|
32
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
33
|
+
});
|
|
34
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/path%20with%20spaces/file.html");
|
|
35
|
+
});
|
|
36
|
+
(0, _extendedTest.test)("relative url with encoded characters", async () => {
|
|
37
|
+
const result = await (0, _.resolveUrl)({
|
|
38
|
+
url: "/path%20with%20spaces/file.html",
|
|
39
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
40
|
+
});
|
|
41
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/path%20with%20spaces/file.html");
|
|
42
|
+
});
|
|
43
|
+
(0, _extendedTest.test)("already full url", async () => {
|
|
44
|
+
const fullUrl = "https://other-site.com/path/to/page";
|
|
45
|
+
const result = await (0, _.resolveUrl)({
|
|
46
|
+
url: fullUrl,
|
|
47
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
48
|
+
});
|
|
49
|
+
(0, _extendedTest.expect)(result).toBe(fullUrl);
|
|
50
|
+
});
|
|
51
|
+
(0, _extendedTest.test)("relative url current directory", async () => {
|
|
52
|
+
const result = await (0, _.resolveUrl)({
|
|
53
|
+
url: "./page.html",
|
|
54
|
+
baseUrl: "https://mhtml-viewer.com/folder/"
|
|
55
|
+
});
|
|
56
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/folder/page.html");
|
|
57
|
+
});
|
|
58
|
+
(0, _extendedTest.test)("relative url parent directory", async () => {
|
|
59
|
+
const result = await (0, _.resolveUrl)({
|
|
60
|
+
url: "../other/page.html",
|
|
61
|
+
baseUrl: "https://mhtml-viewer.com/folder/subfolder/"
|
|
62
|
+
});
|
|
63
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/folder/other/page.html");
|
|
64
|
+
});
|
|
65
|
+
(0, _extendedTest.test)("query parameter encoding", async () => {
|
|
66
|
+
const result = await (0, _.resolveUrl)({
|
|
67
|
+
url: "/search?q=hello world&filter=a+b",
|
|
68
|
+
baseUrl: "https://mhtml-viewer.com"
|
|
69
|
+
});
|
|
70
|
+
console.log("RESULT: ", result);
|
|
71
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/search?q=hello%20world&filter=a%2Bb");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
(0, _extendedTest.describe)("String URL with page tests", () => {
|
|
75
|
+
(0, _extendedTest.test)("relative url with page basic", async () => {
|
|
76
|
+
const browser = await _playwright.chromium.launch({
|
|
77
|
+
headless: true
|
|
78
|
+
});
|
|
79
|
+
try {
|
|
80
|
+
const page = await browser.newPage();
|
|
81
|
+
await page.goto("https://mhtml-viewer.com/some/path");
|
|
82
|
+
const result = await (0, _.resolveUrl)({
|
|
83
|
+
url: "/new/path",
|
|
84
|
+
page: page
|
|
85
|
+
});
|
|
86
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/new/path");
|
|
87
|
+
} finally {
|
|
88
|
+
await browser.close();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, _extendedTest.test)("already full url with page", async () => {
|
|
92
|
+
const browser = await _playwright.chromium.launch({
|
|
93
|
+
headless: true
|
|
94
|
+
});
|
|
95
|
+
try {
|
|
96
|
+
const page = await browser.newPage();
|
|
97
|
+
await page.goto("https://mhtml-viewer.com/some/path");
|
|
98
|
+
const fullUrl = "https://other-site.com/different/path";
|
|
99
|
+
const result = await (0, _.resolveUrl)({
|
|
100
|
+
url: fullUrl,
|
|
101
|
+
page: page
|
|
102
|
+
});
|
|
103
|
+
(0, _extendedTest.expect)(result).toBe(fullUrl);
|
|
104
|
+
} finally {
|
|
105
|
+
await browser.close();
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
(0, _extendedTest.test)("page with query and fragment", async () => {
|
|
109
|
+
const browser = await _playwright.chromium.launch({
|
|
110
|
+
headless: true
|
|
111
|
+
});
|
|
112
|
+
try {
|
|
113
|
+
const page = await browser.newPage();
|
|
114
|
+
await page.goto("https://mhtml-viewer.com/folder/page?param=value#section");
|
|
115
|
+
const result = await (0, _.resolveUrl)({
|
|
116
|
+
url: "/new/path",
|
|
117
|
+
page: page
|
|
118
|
+
});
|
|
119
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/new/path");
|
|
120
|
+
} finally {
|
|
121
|
+
await browser.close();
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
(0, _extendedTest.describe)("Locator and ElementHandle tests", () => {
|
|
126
|
+
(0, _extendedTest.test)("get anchor href basic", async () => {
|
|
127
|
+
const browser = await _playwright.chromium.launch({
|
|
128
|
+
headless: true
|
|
129
|
+
});
|
|
130
|
+
try {
|
|
131
|
+
const page = await browser.newPage();
|
|
132
|
+
await page.goto("https://mhtml-viewer.com");
|
|
133
|
+
await page.setContent(`
|
|
134
|
+
<html>
|
|
135
|
+
<body>
|
|
136
|
+
<a href="/test/path" id="test-link">Test Link</a>
|
|
137
|
+
</body>
|
|
138
|
+
</html>
|
|
139
|
+
`);
|
|
140
|
+
const locator = page.locator("#test-link");
|
|
141
|
+
const result = await (0, _.resolveUrl)({
|
|
142
|
+
url: locator
|
|
143
|
+
});
|
|
144
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/test/path");
|
|
145
|
+
} finally {
|
|
146
|
+
await browser.close();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
(0, _extendedTest.test)("get anchor href full url", async () => {
|
|
150
|
+
const browser = await _playwright.chromium.launch({
|
|
151
|
+
headless: true
|
|
152
|
+
});
|
|
153
|
+
try {
|
|
154
|
+
const page = await browser.newPage();
|
|
155
|
+
await page.setContent(`
|
|
156
|
+
<html>
|
|
157
|
+
<body>
|
|
158
|
+
<a href="https://other-site.com/page" id="external-link">External Link</a>
|
|
159
|
+
</body>
|
|
160
|
+
</html>
|
|
161
|
+
`);
|
|
162
|
+
const locator = page.locator("#external-link");
|
|
163
|
+
const result = await (0, _.resolveUrl)({
|
|
164
|
+
url: locator
|
|
165
|
+
});
|
|
166
|
+
(0, _extendedTest.expect)(result).toBe("https://other-site.com/page");
|
|
167
|
+
} finally {
|
|
168
|
+
await browser.close();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
(0, _extendedTest.test)("get anchor href with query and fragment", async () => {
|
|
172
|
+
const browser = await _playwright.chromium.launch({
|
|
173
|
+
headless: true
|
|
174
|
+
});
|
|
175
|
+
try {
|
|
176
|
+
const page = await browser.newPage();
|
|
177
|
+
await page.goto("https://mhtml-viewer.com");
|
|
178
|
+
await page.setContent(`
|
|
179
|
+
<html>
|
|
180
|
+
<body>
|
|
181
|
+
<a href="/search?q=test&page=1#results" id="complex-link">Search Link</a>
|
|
182
|
+
</body>
|
|
183
|
+
</html>
|
|
184
|
+
`);
|
|
185
|
+
const locator = page.locator("#complex-link");
|
|
186
|
+
const result = await (0, _.resolveUrl)({
|
|
187
|
+
url: locator
|
|
188
|
+
});
|
|
189
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/search?q=test&page=1#results");
|
|
190
|
+
} finally {
|
|
191
|
+
await browser.close();
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
(0, _extendedTest.test)("get anchor href non anchor element error", async () => {
|
|
195
|
+
const browser = await _playwright.chromium.launch({
|
|
196
|
+
headless: true
|
|
197
|
+
});
|
|
198
|
+
try {
|
|
199
|
+
const page = await browser.newPage();
|
|
200
|
+
await page.setContent(`
|
|
201
|
+
<html>
|
|
202
|
+
<body>
|
|
203
|
+
<div id="not-anchor">Not a link</div>
|
|
204
|
+
</body>
|
|
205
|
+
</html>
|
|
206
|
+
`);
|
|
207
|
+
const locator = page.locator("#not-anchor");
|
|
208
|
+
await (0, _extendedTest.expect)(async () => {
|
|
209
|
+
await (0, _.resolveUrl)({
|
|
210
|
+
url: locator
|
|
211
|
+
});
|
|
212
|
+
}).rejects.toThrow("Expected an anchor element, got DIV");
|
|
213
|
+
} finally {
|
|
214
|
+
await browser.close();
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
(0, _extendedTest.test)("get anchor href button element error", async () => {
|
|
218
|
+
const browser = await _playwright.chromium.launch({
|
|
219
|
+
headless: true
|
|
220
|
+
});
|
|
221
|
+
try {
|
|
222
|
+
const page = await browser.newPage();
|
|
223
|
+
await page.setContent(`
|
|
224
|
+
<html>
|
|
225
|
+
<body>
|
|
226
|
+
<button id="button-element">Click me</button>
|
|
227
|
+
</body>
|
|
228
|
+
</html>
|
|
229
|
+
`);
|
|
230
|
+
const locator = page.locator("#button-element");
|
|
231
|
+
await (0, _extendedTest.expect)(async () => {
|
|
232
|
+
await (0, _.resolveUrl)({
|
|
233
|
+
url: locator
|
|
234
|
+
});
|
|
235
|
+
}).rejects.toThrow("Expected an anchor element, got BUTTON");
|
|
236
|
+
} finally {
|
|
237
|
+
await browser.close();
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
(0, _extendedTest.test)("get anchor href empty href", async () => {
|
|
241
|
+
const browser = await _playwright.chromium.launch({
|
|
242
|
+
headless: true
|
|
243
|
+
});
|
|
244
|
+
try {
|
|
245
|
+
const page = await browser.newPage();
|
|
246
|
+
await page.goto("https://mhtml-viewer.com/current/page");
|
|
247
|
+
await page.setContent(`
|
|
248
|
+
<html>
|
|
249
|
+
<body>
|
|
250
|
+
<a href="" id="empty-link">Empty Link</a>
|
|
251
|
+
</body>
|
|
252
|
+
</html>
|
|
253
|
+
`);
|
|
254
|
+
const locator = page.locator("#empty-link");
|
|
255
|
+
const result = await (0, _.resolveUrl)({
|
|
256
|
+
url: locator
|
|
257
|
+
});
|
|
258
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/current/page");
|
|
259
|
+
} finally {
|
|
260
|
+
await browser.close();
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
(0, _extendedTest.test)("get anchor href hash only", async () => {
|
|
264
|
+
const browser = await _playwright.chromium.launch({
|
|
265
|
+
headless: true
|
|
266
|
+
});
|
|
267
|
+
try {
|
|
268
|
+
const page = await browser.newPage();
|
|
269
|
+
await page.goto("https://mhtml-viewer.com/current/page");
|
|
270
|
+
await page.setContent(`
|
|
271
|
+
<html>
|
|
272
|
+
<body>
|
|
273
|
+
<a href="#section1" id="hash-link">Hash Link</a>
|
|
274
|
+
</body>
|
|
275
|
+
</html>
|
|
276
|
+
`);
|
|
277
|
+
const locator = page.locator("#hash-link");
|
|
278
|
+
const result = await (0, _.resolveUrl)({
|
|
279
|
+
url: locator
|
|
280
|
+
});
|
|
281
|
+
(0, _extendedTest.expect)(result).toBe("https://mhtml-viewer.com/current/page#section1");
|
|
282
|
+
} finally {
|
|
283
|
+
await browser.close();
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
(0, _extendedTest.describe)("Error handling tests", () => {
|
|
288
|
+
(0, _extendedTest.test)("both baseUrl and page provided should throw error", async () => {
|
|
289
|
+
const browser = await _playwright.chromium.launch({
|
|
290
|
+
headless: true
|
|
291
|
+
});
|
|
292
|
+
try {
|
|
293
|
+
const page = await browser.newPage();
|
|
294
|
+
await page.goto("https://mhtml-viewer.com");
|
|
295
|
+
const invalidParams = {
|
|
296
|
+
url: "/test",
|
|
297
|
+
baseUrl: "https://example.com",
|
|
298
|
+
page: page
|
|
299
|
+
};
|
|
300
|
+
await (0, _extendedTest.expect)(async () => {
|
|
301
|
+
await (0, _.resolveUrl)(invalidParams);
|
|
302
|
+
}).rejects.toThrow("Cannot provide both 'baseUrl' and 'page' parameters");
|
|
303
|
+
} finally {
|
|
304
|
+
await browser.close();
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
(0, _extendedTest.test)("neither baseUrl nor page provided should throw error", async () => {
|
|
308
|
+
const invalidParams = {
|
|
309
|
+
url: "/test"
|
|
310
|
+
};
|
|
311
|
+
await (0, _extendedTest.expect)(async () => {
|
|
312
|
+
await (0, _.resolveUrl)(invalidParams);
|
|
313
|
+
}).rejects.toThrow("Must provide either 'baseUrl' or 'page' parameter");
|
|
314
|
+
});
|
|
315
|
+
(0, _extendedTest.test)("baseUrl provided with locator should throw error", async () => {
|
|
316
|
+
const browser = await _playwright.chromium.launch({
|
|
317
|
+
headless: true
|
|
318
|
+
});
|
|
319
|
+
try {
|
|
320
|
+
const page = await browser.newPage();
|
|
321
|
+
await page.setContent(`
|
|
322
|
+
<html>
|
|
323
|
+
<body>
|
|
324
|
+
<a href="/test" id="link">Link</a>
|
|
325
|
+
</body>
|
|
326
|
+
</html>
|
|
327
|
+
`);
|
|
328
|
+
const locator = page.locator("#link");
|
|
329
|
+
const invalidParams = {
|
|
330
|
+
url: locator,
|
|
331
|
+
baseUrl: "https://example.com"
|
|
332
|
+
};
|
|
333
|
+
await (0, _extendedTest.expect)(async () => {
|
|
334
|
+
await (0, _.resolveUrl)(invalidParams);
|
|
335
|
+
}).rejects.toThrow("baseUrl and page parameters are not needed when url is Locator");
|
|
336
|
+
} finally {
|
|
337
|
+
await browser.close();
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
});
|