@intuned/browser-dev 0.1.4-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/.babelrc +21 -0
- package/.eslintignore +10 -0
- package/.eslintrc.js +39 -0
- package/BROWSER_SCRIPTS_SETUP.md +84 -0
- package/LICENSE +43 -0
- package/README.md +160 -0
- package/RELEASE.md +60 -0
- package/dist/ai/export.d.js +5 -0
- package/dist/ai/export.d.ts +641 -0
- package/dist/ai/extractStructuredData.js +320 -0
- package/dist/ai/extractStructuredDataUsingAi.js +142 -0
- package/dist/ai/extractionHelpers/screenshotHelpers.js +56 -0
- package/dist/ai/extractionHelpers/validateSchema.js +148 -0
- package/dist/ai/index.d.ts +641 -0
- package/dist/ai/index.js +19 -0
- package/dist/ai/isPageLoaded.js +80 -0
- package/dist/ai/prompt.js +39 -0
- package/dist/ai/tests/testCheckAllTypesAreStrings.spec.js +137 -0
- package/dist/ai/tests/testExtractFromContent.spec.js +372 -0
- package/dist/ai/tests/testExtractStructuredData.spec.js +646 -0
- package/dist/ai/tests/testIsPageLoaded.spec.js +277 -0
- package/dist/ai/tools/index.js +48 -0
- package/dist/ai/types/errors.js +67 -0
- package/dist/ai/types/models.js +45 -0
- package/dist/ai/types/types.js +48 -0
- package/dist/ai/validators.js +167 -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 +32 -0
- package/dist/common/ensureBrowserScripts.js +14 -0
- package/dist/common/extendedTest.js +157 -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 +57 -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/script.js +2602 -0
- package/dist/common/tests/testEnsureBrowserScript.spec.js +31 -0
- package/dist/common/xpathMapping.js +107 -0
- package/dist/helpers/clickUntilExhausted.js +85 -0
- package/dist/helpers/downloadFile.js +125 -0
- package/dist/helpers/export.d.js +5 -0
- package/dist/helpers/export.d.ts +1220 -0
- package/dist/helpers/extractMarkdown.js +35 -0
- package/dist/helpers/filterEmptyValues.js +54 -0
- package/dist/helpers/gotoUrl.js +98 -0
- package/dist/helpers/index.d.ts +1220 -0
- package/dist/helpers/index.js +122 -0
- package/dist/helpers/processDate.js +25 -0
- package/dist/helpers/resolveUrl.js +64 -0
- package/dist/helpers/sanitizeHtml.js +74 -0
- package/dist/helpers/saveFileToS3.js +50 -0
- package/dist/helpers/scrollToLoadContent.js +57 -0
- package/dist/helpers/tests/testClickUntilExhausted.spec.js +372 -0
- package/dist/helpers/tests/testDownloadFile.spec.js +206 -0
- package/dist/helpers/tests/testExtractMarkdown.spec.js +290 -0
- package/dist/helpers/tests/testFilterEmptyValues.spec.js +151 -0
- package/dist/helpers/tests/testGoToUrl.spec.js +37 -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/testScrollToLoadContent.spec.js +163 -0
- package/dist/helpers/tests/testValidateDataUsingSchema.spec.js +342 -0
- package/dist/helpers/tests/testWithDomSettledWait.spec.js +164 -0
- package/dist/helpers/tests/testWithNetworkIdleWait.spec.js +114 -0
- package/dist/helpers/types/Attachment.js +115 -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 +154 -0
- package/dist/helpers/utils/getS3Client.js +22 -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 +103 -0
- package/dist/helpers/waitForDomSettled.js +90 -0
- package/dist/helpers/withNetworkSettledWait.js +91 -0
- package/dist/index.d.js +16 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +16 -0
- package/dist/intunedServices/ApiGateway/aiApiGateway.js +143 -0
- package/dist/intunedServices/ApiGateway/factory.js +16 -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 +355 -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 +135 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingGoogle.js +37 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingOpenAi.js +132 -0
- package/dist/optimized-extractors/common/extractStrucutredDataUsingAiInstance.js +122 -0
- package/dist/optimized-extractors/common/findTableHeaders.js +162 -0
- package/dist/optimized-extractors/common/index.js +55 -0
- package/dist/optimized-extractors/common/isTableHeaderOrFooter.js +84 -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 +269 -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__/testArrayExtractorFromLocator.spec.js +146 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/testArrayExtractorFromPage.spec.js +130 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/verifyThatAllXpathsArePartOfSameArray.test.js +9 -0
- package/dist/optimized-extractors/listExtractionHelpers/dynamicListExtractor.js +160 -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 +243 -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/types/intuned-runtime.d.js +1 -0
- package/dist/types/intuned-runtime.d.ts +64 -0
- package/dist/vite-env.d.js +1 -0
- package/dist/vite-env.d.ts +9 -0
- package/generated-docs/ai/functions/extractStructuredData.mdx +255 -0
- package/generated-docs/ai/functions/isPageLoaded.mdx +88 -0
- package/generated-docs/ai/interfaces/ArraySchema.mdx +36 -0
- package/generated-docs/ai/interfaces/BasicSchema.mdx +14 -0
- package/generated-docs/ai/interfaces/BooleanSchema.mdx +28 -0
- package/generated-docs/ai/interfaces/ImageBufferContentItem.mdx +16 -0
- package/generated-docs/ai/interfaces/ImageUrlContentItem.mdx +16 -0
- package/generated-docs/ai/interfaces/NumberSchema.mdx +35 -0
- package/generated-docs/ai/interfaces/ObjectSchema.mdx +39 -0
- package/generated-docs/ai/interfaces/StringSchema.mdx +35 -0
- package/generated-docs/ai/interfaces/TextContentItem.mdx +14 -0
- package/generated-docs/ai/type-aliases/ContentItem.mdx +12 -0
- package/generated-docs/ai/type-aliases/JsonSchema.mdx +47 -0
- package/generated-docs/ai/type-aliases/SUPPORTED_MODELS.mdx +85 -0
- package/generated-docs/helpers/functions/downloadFile.mdx +99 -0
- package/generated-docs/helpers/functions/extractMarkdown.mdx +56 -0
- package/generated-docs/helpers/functions/filterEmptyValues.mdx +51 -0
- package/generated-docs/helpers/functions/goToUrl.mdx +124 -0
- package/generated-docs/helpers/functions/processDate.mdx +55 -0
- package/generated-docs/helpers/functions/resolveUrl.mdx +165 -0
- package/generated-docs/helpers/functions/sanitizeHtml.mdx +113 -0
- package/generated-docs/helpers/functions/saveFileToS3.mdx +127 -0
- package/generated-docs/helpers/functions/scrollToLoadContent.mdx +89 -0
- package/generated-docs/helpers/functions/uploadFileToS3.mdx +121 -0
- package/generated-docs/helpers/functions/validateDataUsingSchema.mdx +90 -0
- package/generated-docs/helpers/functions/waitForDomSettled.mdx +91 -0
- package/generated-docs/helpers/functions/withNetworkSettledWait.mdx +76 -0
- package/generated-docs/helpers/interfaces/Attachment.mdx +56 -0
- package/generated-docs/helpers/interfaces/S3Configs.mdx +52 -0
- package/generated-docs/helpers/interfaces/SanitizeHtmlOptions.mdx +22 -0
- package/generated-docs/helpers/type-aliases/AttachmentType.mdx +10 -0
- package/generated-docs/helpers/type-aliases/FileType.mdx +61 -0
- package/generated-docs/helpers/type-aliases/Trigger.mdx +62 -0
- package/how-to-generate-docs.md +61 -0
- package/how-to-run-tests.md +42 -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,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _extendedTest = require("../../common/extendedTest");
|
|
4
|
+
var _ = require("..");
|
|
5
|
+
(0, _extendedTest.describe)("Sanitize HTML Tests", () => {
|
|
6
|
+
(0, _extendedTest.test)("sanitize html", async () => {
|
|
7
|
+
const html = "<div>Hello</div>";
|
|
8
|
+
(0, _extendedTest.expect)((0, _.sanitizeHtml)({
|
|
9
|
+
html
|
|
10
|
+
})).toBe("<div>Hello</div>");
|
|
11
|
+
});
|
|
12
|
+
(0, _extendedTest.test)("sanitize html with custom options", async () => {
|
|
13
|
+
const html = `<div>
|
|
14
|
+
<script>alert('test')</script>
|
|
15
|
+
<style>.test { color: red; }</style>
|
|
16
|
+
<p>Content</p>
|
|
17
|
+
</div>`;
|
|
18
|
+
const result = (0, _.sanitizeHtml)({
|
|
19
|
+
html,
|
|
20
|
+
removeScripts: true,
|
|
21
|
+
removeStyles: false
|
|
22
|
+
});
|
|
23
|
+
(0, _extendedTest.expect)(result).not.toContain("<script>");
|
|
24
|
+
(0, _extendedTest.expect)(result).toContain("<style>");
|
|
25
|
+
(0, _extendedTest.expect)(result).toContain("Content");
|
|
26
|
+
});
|
|
27
|
+
(0, _extendedTest.test)("control attribute preservation", async () => {
|
|
28
|
+
const html = `<div data-long="${"x".repeat(600)}" class="test" style="color: red;">Content</div>`;
|
|
29
|
+
const result = (0, _.sanitizeHtml)({
|
|
30
|
+
html,
|
|
31
|
+
maxAttributeLength: 10,
|
|
32
|
+
preserveAttributes: ["class", "style"]
|
|
33
|
+
});
|
|
34
|
+
(0, _extendedTest.expect)(result).toContain('class="test"');
|
|
35
|
+
(0, _extendedTest.expect)(result).toContain('style="color: red;"');
|
|
36
|
+
(0, _extendedTest.expect)(result).not.toContain("data-long");
|
|
37
|
+
});
|
|
38
|
+
(0, _extendedTest.test)("clean long attribute values", async () => {
|
|
39
|
+
const html = `<div class="hdt-card-product__wrapper">
|
|
40
|
+
<div class="hdt-card-product__media hdt-relative hdt-oh hdt-has-size-list" calc-nav="">
|
|
41
|
+
|
|
42
|
+
<a data-pr-url="" href="/collections/ver-todo-bebe-nina/products/745049-015520" data-instant="" calc-nav=""
|
|
43
|
+
class="hdt-card-product__media-wrapp hdt-ratio custom-card-img-url"
|
|
44
|
+
style="--aspect-ratioapt: 0.7917656373713381"><img
|
|
45
|
+
src="//www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=1000"
|
|
46
|
+
alt="Vestido con body y manga corta rosado"
|
|
47
|
+
srcset="//www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=360 360w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=533 533w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=668 668w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=720 720w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=940 940w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=940 940w"
|
|
48
|
+
width="1000" height="1263" loading="lazy" sizes="
|
|
49
|
+
(max-width: 767px) calc(100vw / 6), (max-width: 1149px) calc(100vw / 3), calc((100vw - 100px) / 3 - (30px / 3 * 2))"
|
|
50
|
+
data-widths="[360, 533, 668, 720, 940, 940, 1066, 1200, 1450]" class="hdt-card-product__media--main"><img
|
|
51
|
+
src="//www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=1000"
|
|
52
|
+
alt="Vestido con body y manga corta rosado"
|
|
53
|
+
srcset="//www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=360 360w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=533 533w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=668 668w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=720 720w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=940 940w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&width=940 940w"
|
|
54
|
+
width="1000" height="1263" loading="lazy" sizes="
|
|
55
|
+
(max-width: 767px) calc(100vw / 6), (max-width: 1149px) calc(100vw / 3), calc((100vw - 100px) / 3 - (30px / 3 * 2))"
|
|
56
|
+
class="hdt-card-product__media--hover"></a>
|
|
57
|
+
<div class="hdt-badge__wrapp hdt-pe-none "></div>
|
|
58
|
+
<div class="hdt-absolute hdt-product-btns-12">
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
<fieldset class="hdt-text-center">
|
|
65
|
+
<p class="hdt-text-center">Selecciona la talla</p><input type="radio"
|
|
66
|
+
class="single-option-selector-template--23524841488756__main t4-swatch-init" value="0-3M" data-index="option1"
|
|
67
|
+
name="talla" id="SingleOptionSelector-9493229895974-0">
|
|
68
|
+
<label for="SingleOptionSelector-9493229895974-0" data-value="0-3M">
|
|
69
|
+
0-3M
|
|
70
|
+
</label><input type="radio" class="single-option-selector-template--23524841488756__main t4-swatch-init"
|
|
71
|
+
value="3-6M" data-index="option1" name="talla" id="SingleOptionSelector-9493229895974-1">
|
|
72
|
+
<label for="SingleOptionSelector-9493229895974-1" data-value="3-6M">
|
|
73
|
+
3-6M
|
|
74
|
+
</label><input type="radio" class="single-option-selector-template--23524841488756__main t4-swatch-init"
|
|
75
|
+
value="6-9M" data-index="option1" name="talla" id="SingleOptionSelector-9493229895974-2">
|
|
76
|
+
<label for="SingleOptionSelector-9493229895974-2" data-value="6-9M">
|
|
77
|
+
6-9M
|
|
78
|
+
</label><input type="radio" class="single-option-selector-template--23524841488756__main t4-swatch-init"
|
|
79
|
+
value="9-12M" data-index="option1" name="talla" id="SingleOptionSelector-9493229895974-3">
|
|
80
|
+
<label for="SingleOptionSelector-9493229895974-3" data-value="9-12M">
|
|
81
|
+
9-12M
|
|
82
|
+
</label><input type="radio" class="single-option-selector-template--23524841488756__main t4-swatch-init"
|
|
83
|
+
value="12-18M" data-index="option1" name="talla" id="SingleOptionSelector-9493229895974-4">
|
|
84
|
+
<label for="SingleOptionSelector-9493229895974-4" data-value="12-18M">
|
|
85
|
+
12-18M
|
|
86
|
+
</label><input type="radio" class="single-option-selector-template--23524841488756__main t4-swatch-init"
|
|
87
|
+
value="18-24M" data-index="option1" name="talla" id="SingleOptionSelector-9493229895974-5">
|
|
88
|
+
<label for="SingleOptionSelector-9493229895974-5" data-value="18-24M">
|
|
89
|
+
18-24M
|
|
90
|
+
</label>
|
|
91
|
+
</fieldset>
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
</div>
|
|
102
|
+
<div class="hdt-card-product__info hdt-card-align-left">
|
|
103
|
+
<div class="custom-price__badge">
|
|
104
|
+
<a data-pr-url="" href="/collections/ver-todo-bebe-nina/products/745049-015520"
|
|
105
|
+
class="hdt-card-product__title hdt-text-lg hdt-font-light hdt-line-clamp" data-instant="">Vestido con body y
|
|
106
|
+
manga corta rosado</a>
|
|
107
|
+
<div class="hdt-product-badges hdt-product-badges__collection"><span class="badge-item badge-item-new"
|
|
108
|
+
style="display: none;">NEW</span>
|
|
109
|
+
<span class="badge-item badge-item-sale" style="display: none;">Sale</span>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
<div class="hdt-price-wrapp hdt-text-base hdt-font-medium">
|
|
113
|
+
<div class="hdt-price__list"><hdt-price class="hdt-price">
|
|
114
|
+
<span class="sr-only sr-only--inline">Descuento</span><span class="hdt-money">$89.990</span></hdt-price></div>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
<div class="t4s-product-colors">
|
|
119
|
+
<fieldset is="hdt-color-list" class="hdt-color-list hdt-color-list-style-1" maximum="4" event="click"
|
|
120
|
+
action-all="">
|
|
121
|
+
<div class="hdt-color-list-item">
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
<span
|
|
126
|
+
class="t4s-pr-color__item t4-variant-custom hdt-color-list-color hdt-rounded-full is-swatch--selected t4-initied"
|
|
127
|
+
data-section-id="template--23524841488756__main"
|
|
128
|
+
data-options="[{"name":"Talla","position":1,"values":["0-3M","3-6M","6-9M","9-12M","12-18M","18-24M"]}]"
|
|
129
|
+
data-compare-price="8999000" data-price-min="" data-price-max=""
|
|
130
|
+
data-product="{"id":9493229895974,"title":"Vestido con body y manga corta rosado","handle":"745049-015520","description":"\\u003cul\\u003e\\n\\u003cli\\u003eVestido corto con body cuello redondo manga corta\\u003c\\/li\\u003e\\n\\u003cli\\u003eElaborado en algodón el cual Proporciona suavida d y frescura ideal para la piel del bebe\\u003c\\/li\\u003e\\n\\u003cli\\u003ePerilla en frente para facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eBotones de pres ión en entrepierna para mayor facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eCon marquilla estampada para mayor comodidad\\u003c\\/li\\u003e\\n\\u003c\\/ul\\u003e","published_at":"2024-07-24T10:10:16-05:00","created_at":"2024-07-23T16:16:36-05:00","vendor":"Baby Fresh","type":"Bebitas","tags":["0-3M","12-18M","18-24M","3-6M","6-9M","9-12M","Bebé niña","Fexar","Kilogramos","Prueba","Vestidos"],"price":8999000,"price_min":8999000,"price_max":8999000,"available":true,"price_varies":false,"compare_at_price":8999000,"compare_at_price_min":8999000,"compare_at_price_max":8999000,"compare_at_price_varies":false,"variants":[{"id":49284929290534,"title":"0-3M","option1":"0-3M","option2":null,"option3":null,"sku":"7703259093993","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 0-3M","public_title":"0-3M","options":["0-3M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929323302,"title":"3-6M","option1":"3-6M","option2":null,"option3":null,"sku":"7703259094013","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 3-6M","public_title":"3-6M","options":["3-6M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929356070,"title":"6-9M","option1":"6-9M","option2":null,"option3":null,"sku":"7703259094037","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 6-9M","public_title":"6-9M","options":["6-9M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929388838,"title":"9-12M","option1":"9-12M","option2":null,"option3":null,"sku":"7703259094075","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 9-12M","public_title":"9-12M","options":["9-12M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929421606,"title":"12-18M","option1":"12-18M","option2":null,"option3":null,"sku":"7703259094112","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 12-18M","public_title":"12-18M","options":["12-18M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929454374,"title":"18-24M","option1":"18-24M","option2":null,"option3":null,"sku":"7703259094150","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 18-24M","public_title":"18-24M","options":["18-24M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-3.jpg?v=1721784699","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-4.jpg?v=1721784699","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-5_2e9bd38b-0ec7-40e9-9e15-5413d3ea4f3f.jpg?v=1724944530"],"featured_image":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699","options":["Talla"],"media":[{"alt":null,"id":40256577470758,"position":1,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699","width":1000},{"alt":null,"id":40256577536294,"position":2,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699","width":1000},{"alt":null,"id":40256577569062,"position":3,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-3.jpg?v=1721784699"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-3.jpg?v=1721784699","width":1000},{"alt":null,"id":40256577601830,"position":4,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-4.jpg?v=1721784699"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-4.jpg?v=1721784699","width":1000},{"alt":null,"id":40599026630950,"position":5,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-5_2e9bd38b-0ec7-40e9-9e15-5413d3ea4f3f.jpg?v=1724944530"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-5_2e9bd38b-0ec7-40e9-9e15-5413d3ea4f3f.jpg?v=1724944530","width":1000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\\u003cul\\u003e\\n\\u003cli\\u003eVestido corto con body cuello redondo manga corta\\u003c\\/li\\u003e\\n\\u003cli\\u003eElaborado en algodón el cual Proporciona suavida d y frescura ideal para la piel del bebe\\u003c\\/li\\u003e\\n\\u003cli\\u003ePerilla en frente para facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eBotones de pres ión en entrepierna para mayor facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eCon marquilla estampada para mayor comodidad\\u003c\\/li\\u003e\\n\\u003c\\/ul\\u003e"}"
|
|
131
|
+
data-id="9493229895974" data-url="/products/745049-015520"
|
|
132
|
+
data-image="//www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=270"
|
|
133
|
+
data-price="8999000" data-ratio="1" data-new=""
|
|
134
|
+
data-variants="[[{"id":49284929290534,"title":"0-3M","option1":"0-3M","option2":null,"option3":null,"sku":"7703259093993","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 0-3M","public_title":"0-3M","options":["0-3M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929323302,"title":"3-6M","option1":"3-6M","option2":null,"option3":null,"sku":"7703259094013","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 3-6M","public_title":"3-6M","options":["3-6M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929356070,"title":"6-9M","option1":"6-9M","option2":null,"option3":null,"sku":"7703259094037","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 6-9M","public_title":"6-9M","options":["6-9M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929388838,"title":"9-12M","option1":"9-12M","option2":null,"option3":null,"sku":"7703259094075","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 9-12M","public_title":"9-12M","options":["9-12M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929421606,"title":"12-18M","option1":"12-18M","option2":null,"option3":null,"sku":"7703259094112","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 12-18M","public_title":"12-18M","options":["12-18M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929454374,"title":"18-24M","option1":"18-24M","option2":null,"option3":null,"sku":"7703259094150","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta rosado - 18-24M","public_title":"18-24M","options":["18-24M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-015520","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}]]">
|
|
135
|
+
<span class="t4s-pr-color__value lazyloadt4s"
|
|
136
|
+
style="background: url(//www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&width=50);"></span>
|
|
137
|
+
</span>
|
|
138
|
+
<span class="t4s-pr-color__item t4-variant-custom hdt-color-list-color hdt-rounded-full t4-initied"
|
|
139
|
+
data-section-id="template--23524841488756__main"
|
|
140
|
+
data-options="[{"name":"Talla","position":1,"values":["0-3M","3-6M","6-9M","9-12M","12-18M","18-24M"]}]"
|
|
141
|
+
data-compare-price="7999000" data-price-min="" data-price-max=""
|
|
142
|
+
data-product="{"id":9493230092582,"title":"Vestido con body y manga corta beige estampado","handle":"745049-040769","description":"\\u003cul\\u003e\\n\\u003cli\\u003eVestido corto con body cuello redondo manga corta\\u003c\\/li\\u003e\\n\\u003cli\\u003eElaborado en algodón el cual Proporciona suavida d y frescura ideal para la piel del bebe\\u003c\\/li\\u003e\\n\\u003cli\\u003ePerilla en frente para facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eBotones de pres ión en entrepierna para mayor facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eCon marquilla estampada para mayor comodidad\\u003c\\/li\\u003e\\n\\u003c\\/ul\\u003e","published_at":"2024-08-12T12:52:44-05:00","created_at":"2024-07-23T16:16:39-05:00","vendor":"Baby Fresh","type":"Bebitas","tags":["0-3M","12-18M","18-24M","3-6M","6-9M","9-12M","Bebé niña","Fexar","Kilogramos","Oferta","Prueba","Vestidos"],"price":6999000,"price_min":6999000,"price_max":6999000,"available":true,"price_varies":false,"compare_at_price":7999000,"compare_at_price_min":7999000,"compare_at_price_max":7999000,"compare_at_price_varies":false,"variants":[{"id":49284929650982,"title":"0-3M","option1":"0-3M","option2":null,"option3":null,"sku":"7703259094006","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 0-3M","public_title":"0-3M","options":["0-3M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929683750,"title":"3-6M","option1":"3-6M","option2":null,"option3":null,"sku":"7703259094020","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 3-6M","public_title":"3-6M","options":["3-6M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929716518,"title":"6-9M","option1":"6-9M","option2":null,"option3":null,"sku":"7703259094051","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 6-9M","public_title":"6-9M","options":["6-9M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929749286,"title":"9-12M","option1":"9-12M","option2":null,"option3":null,"sku":"7703259094099","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 9-12M","public_title":"9-12M","options":["9-12M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929782054,"title":"12-18M","option1":"12-18M","option2":null,"option3":null,"sku":"7703259094136","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 12-18M","public_title":"12-18M","options":["12-18M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929814822,"title":"18-24M","option1":"18-24M","option2":null,"option3":null,"sku":"7703259094174","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 18-24M","public_title":"18-24M","options":["18-24M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2_717dc0ac-a641-4025-bf01-d11a9445d416.jpg?v=1725462754","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2.jpg?v=1721784690","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-3.jpg?v=1721784690","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-4.jpg?v=1721784690","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-5.jpg?v=1721784690"],"featured_image":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690","options":["Talla"],"media":[{"alt":null,"id":40256576323878,"position":1,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690","width":1000},{"alt":null,"id":40641627390246,"position":2,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2_717dc0ac-a641-4025-bf01-d11a9445d416.jpg?v=1725462754"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2_717dc0ac-a641-4025-bf01-d11a9445d416.jpg?v=1725462754","width":1000},{"alt":null,"id":40256576356646,"position":3,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2.jpg?v=1721784690"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2.jpg?v=1721784690","width":1000},{"alt":null,"id":40256576389414,"position":4,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-3.jpg?v=1721784690"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-3.jpg?v=1721784690","width":1000},{"alt":null,"id":40256576422182,"position":5,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-4.jpg?v=1721784690"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-4.jpg?v=1721784690","width":1000},{"alt":null,"id":40256576454950,"position":6,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-5.jpg?v=1721784690"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-5.jpg?v=1721784690","width":1000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\\u003cul\\u003e\\n\\u003cli\\u003eVestido corto con body cuello redondo manga corta\\u003c\\/li\\u003e\\n\\u003cli\\u003eElaborado en algodón el cual Proporciona suavida d y frescura ideal para la piel del bebe\\u003c\\/li\\u003e\\n\\u003cli\\u003ePerilla en frente para facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eBotones de pres ión en entrepierna para mayor facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eCon marquilla estampada para mayor comodidad\\u003c\\/li\\u003e\\n\\u003c\\/ul\\u003e"}"
|
|
143
|
+
data-id="9493230092582" data-url="/products/745049-040769"
|
|
144
|
+
data-image="//www.babyfresh.co/cdn/shop/files/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690&width=270"
|
|
145
|
+
data-price="6999000" data-ratio="1" data-new=""
|
|
146
|
+
data-variants="[[{"id":49284929650982,"title":"0-3M","option1":"0-3M","option2":null,"option3":null,"sku":"7703259094006","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 0-3M","public_title":"0-3M","options":["0-3M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929683750,"title":"3-6M","option1":"3-6M","option2":null,"option3":null,"sku":"7703259094020","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 3-6M","public_title":"3-6M","options":["3-6M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929716518,"title":"6-9M","option1":"6-9M","option2":null,"option3":null,"sku":"7703259094051","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 6-9M","public_title":"6-9M","options":["6-9M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929749286,"title":"9-12M","option1":"9-12M","option2":null,"option3":null,"sku":"7703259094099","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 9-12M","public_title":"9-12M","options":["9-12M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929782054,"title":"12-18M","option1":"12-18M","option2":null,"option3":null,"sku":"7703259094136","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 12-18M","public_title":"12-18M","options":["12-18M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49284929814822,"title":"18-24M","option1":"18-24M","option2":null,"option3":null,"sku":"7703259094174","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 18-24M","public_title":"18-24M","options":["18-24M"],"price":6999000,"weight":0,"compare_at_price":7999000,"inventory_management":"shopify","barcode":"745049-040769","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}]]">
|
|
147
|
+
<span class="t4s-pr-color__value lazyloadt4s"
|
|
148
|
+
style="background: url(//www.babyfresh.co/cdn/shop/files/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690&width=50);"></span>
|
|
149
|
+
</span>
|
|
150
|
+
<span class="t4s-pr-color__item t4-variant-custom hdt-color-list-color hdt-rounded-full t4-initied"
|
|
151
|
+
data-section-id="template--23524841488756__main"
|
|
152
|
+
data-options="[{"name":"Talla","position":1,"values":["0-3M","3-6M","6-9M","9-12M","12-18M","18-24M"]}]"
|
|
153
|
+
data-compare-price="8999000" data-price-min="" data-price-max=""
|
|
154
|
+
data-product="{"id":9493297201446,"title":"Vestido con body y manga corta beige estampado","handle":"745049-046593","description":"\\u003cul\\u003e\\n\\u003cli\\u003eVestido corto con body cuello redondo sin manga con bolero en sisa\\u003c\\/li\\u003e\\n\\u003cli\\u003eElaborado en algodón con elastan o\\u003c\\/li\\u003e\\n\\u003cli\\u003eProporciona suavidad y frescura ideal para la piel del bebé\\u003c\\/li\\u003e\\n\\u003cli\\u003eTejido ligeramente elástico que se ad apta mejor al cuerpo y brindar mayor comodidad\\u003c\\/li\\u003e\\n\\u003cli\\u003ePerilla en frente con botones funcionales y botones d e presión en entrepierna del body para mayor facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eCon marquilla estampada para mayor comodidad\\u003c\\/li\\u003e\\n\\u003c\\/ul\\u003e","published_at":"2024-08-24T08:20:26-05:00","created_at":"2024-07-23T16:39:26-05:00","vendor":"Baby Fresh","type":"Bebitas","tags":["0-3M","12-18M","18-24M","3-6M","6-9M","9-12M","Bautizo","Bebé niña","Fexar","Kilogramos","Prueba","Vestidos"],"price":8999000,"price_min":8999000,"price_max":8999000,"available":true,"price_varies":false,"compare_at_price":8999000,"compare_at_price_min":8999000,"compare_at_price_max":8999000,"compare_at_price_varies":false,"variants":[{"id":49285132615974,"title":"0-3M","option1":"0-3M","option2":null,"option3":null,"sku":"7703259191217","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 0-3M","public_title":"0-3M","options":["0-3M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132648742,"title":"3-6M","option1":"3-6M","option2":null,"option3":null,"sku":"7703259191224","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 3-6M","public_title":"3-6M","options":["3-6M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132681510,"title":"6-9M","option1":"6-9M","option2":null,"option3":null,"sku":"7703259191231","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 6-9M","public_title":"6-9M","options":["6-9M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132714278,"title":"9-12M","option1":"9-12M","option2":null,"option3":null,"sku":"7703259191248","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 9-12M","public_title":"9-12M","options":["9-12M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132747046,"title":"12-18M","option1":"12-18M","option2":null,"option3":null,"sku":"7703259191255","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 12-18M","public_title":"12-18M","options":["12-18M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132779814,"title":"18-24M","option1":"18-24M","option2":null,"option3":null,"sku":"7703259191262","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 18-24M","public_title":"18-24M","options":["18-24M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-2_69fe5b9d-475f-4277-a0ba-c54e8e8cbd8f.jpg?v=1723725552","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-3_d30ebbfd-de94-4c6a-94d5-e2e8f0d9f56b.jpg?v=1723725552","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-4_74768f37-8b78-44f9-aa0f-57d68fb420fc.jpg?v=1723725552","\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-5_ebf66abb-dc02-47af-8206-cd9037e92135.jpg?v=1724944514"],"featured_image":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552","options":["Talla"],"media":[{"alt":null,"id":40459456250150,"position":1,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552","width":1000},{"alt":null,"id":40459456282918,"position":2,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-2_69fe5b9d-475f-4277-a0ba-c54e8e8cbd8f.jpg?v=1723725552"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-2_69fe5b9d-475f-4277-a0ba-c54e8e8cbd8f.jpg?v=1723725552","width":1000},{"alt":null,"id":40459456315686,"position":3,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-3_d30ebbfd-de94-4c6a-94d5-e2e8f0d9f56b.jpg?v=1723725552"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-3_d30ebbfd-de94-4c6a-94d5-e2e8f0d9f56b.jpg?v=1723725552","width":1000},{"alt":null,"id":40459456348454,"position":4,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-4_74768f37-8b78-44f9-aa0f-57d68fb420fc.jpg?v=1723725552"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-4_74768f37-8b78-44f9-aa0f-57d68fb420fc.jpg?v=1723725552","width":1000},{"alt":null,"id":40599021584678,"position":5,"preview_image":{"aspect_ratio":0.792,"height":1263,"width":1000,"src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-5_ebf66abb-dc02-47af-8206-cd9037e92135.jpg?v=1724944514"},"aspect_ratio":0.792,"height":1263,"media_type":"image","src":"\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-5_ebf66abb-dc02-47af-8206-cd9037e92135.jpg?v=1724944514","width":1000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\\u003cul\\u003e\\n\\u003cli\\u003eVestido corto con body cuello redondo sin manga con bolero en sisa\\u003c\\/li\\u003e\\n\\u003cli\\u003eElaborado en algodón con elastan o\\u003c\\/li\\u003e\\n\\u003cli\\u003eProporciona suavidad y frescura ideal para la piel del bebé\\u003c\\/li\\u003e\\n\\u003cli\\u003eTejido ligeramente elástico que se ad apta mejor al cuerpo y brindar mayor comodidad\\u003c\\/li\\u003e\\n\\u003cli\\u003ePerilla en frente con botones funcionales y botones d e presión en entrepierna del body para mayor facilidad al vestir\\u003c\\/li\\u003e\\n\\u003cli\\u003eCon marquilla estampada para mayor comodidad\\u003c\\/li\\u003e\\n\\u003c\\/ul\\u003e"}"
|
|
155
|
+
data-id="9493297201446" data-url="/products/745049-046593"
|
|
156
|
+
data-image="//www.babyfresh.co/cdn/shop/files/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552&width=270"
|
|
157
|
+
data-price="8999000" data-ratio="1" data-new=""
|
|
158
|
+
data-variants="[[{"id":49285132615974,"title":"0-3M","option1":"0-3M","option2":null,"option3":null,"sku":"7703259191217","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 0-3M","public_title":"0-3M","options":["0-3M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132648742,"title":"3-6M","option1":"3-6M","option2":null,"option3":null,"sku":"7703259191224","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 3-6M","public_title":"3-6M","options":["3-6M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132681510,"title":"6-9M","option1":"6-9M","option2":null,"option3":null,"sku":"7703259191231","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 6-9M","public_title":"6-9M","options":["6-9M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132714278,"title":"9-12M","option1":"9-12M","option2":null,"option3":null,"sku":"7703259191248","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 9-12M","public_title":"9-12M","options":["9-12M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132747046,"title":"12-18M","option1":"12-18M","option2":null,"option3":null,"sku":"7703259191255","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 12-18M","public_title":"12-18M","options":["12-18M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":49285132779814,"title":"18-24M","option1":"18-24M","option2":null,"option3":null,"sku":"7703259191262","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Vestido con body y manga corta beige estampado - 18-24M","public_title":"18-24M","options":["18-24M"],"price":8999000,"weight":0,"compare_at_price":8999000,"inventory_management":"shopify","barcode":"745049-046593","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}]]">
|
|
159
|
+
<span class="t4s-pr-color__value lazyloadt4s"
|
|
160
|
+
style="background: url(//www.babyfresh.co/cdn/shop/files/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552&width=50);"></span>
|
|
161
|
+
</span>
|
|
162
|
+
</div>
|
|
163
|
+
</fieldset>
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
</div>
|
|
168
|
+
</div>`;
|
|
169
|
+
const sanitizedHtml = (0, _.sanitizeHtml)({
|
|
170
|
+
html
|
|
171
|
+
});
|
|
172
|
+
(0, _extendedTest.expect)(sanitizedHtml).not.toContain("data-product");
|
|
173
|
+
(0, _extendedTest.expect)(sanitizedHtml).toContain("Selecciona la talla");
|
|
174
|
+
(0, _extendedTest.expect)(sanitizedHtml).not.toContain("style=");
|
|
175
|
+
});
|
|
176
|
+
(0, _extendedTest.test)("sanitize html doesnt clean content larger than 500 chars", async () => {
|
|
177
|
+
const html = `<div>${"ahmad".repeat(100)}</div>`;
|
|
178
|
+
const sanitizedHtml = (0, _.sanitizeHtml)({
|
|
179
|
+
html
|
|
180
|
+
});
|
|
181
|
+
(0, _extendedTest.expect)(sanitizedHtml).toBe(html);
|
|
182
|
+
});
|
|
183
|
+
(0, _extendedTest.test)("remove scripts option", async () => {
|
|
184
|
+
const html = `<div><script>alert('xss')</script><p>Content</p></div>`;
|
|
185
|
+
const resultRemove = (0, _.sanitizeHtml)({
|
|
186
|
+
html,
|
|
187
|
+
removeScripts: true
|
|
188
|
+
});
|
|
189
|
+
(0, _extendedTest.expect)(resultRemove).not.toContain("<script>");
|
|
190
|
+
(0, _extendedTest.expect)(resultRemove).toContain("Content");
|
|
191
|
+
const resultKeep = (0, _.sanitizeHtml)({
|
|
192
|
+
html,
|
|
193
|
+
removeScripts: false
|
|
194
|
+
});
|
|
195
|
+
(0, _extendedTest.expect)(resultKeep).toContain("<script>");
|
|
196
|
+
(0, _extendedTest.expect)(resultKeep).toContain("Content");
|
|
197
|
+
});
|
|
198
|
+
(0, _extendedTest.test)("remove styles option", async () => {
|
|
199
|
+
const html = `<div><style>.test { color: red; }</style><p>Content</p></div>`;
|
|
200
|
+
const resultRemove = (0, _.sanitizeHtml)({
|
|
201
|
+
html,
|
|
202
|
+
removeStyles: true
|
|
203
|
+
});
|
|
204
|
+
(0, _extendedTest.expect)(resultRemove).not.toContain("<style>");
|
|
205
|
+
(0, _extendedTest.expect)(resultRemove).toContain("Content");
|
|
206
|
+
const resultKeep = (0, _.sanitizeHtml)({
|
|
207
|
+
html,
|
|
208
|
+
removeStyles: false
|
|
209
|
+
});
|
|
210
|
+
(0, _extendedTest.expect)(resultKeep).toContain("<style>");
|
|
211
|
+
(0, _extendedTest.expect)(resultKeep).toContain("Content");
|
|
212
|
+
});
|
|
213
|
+
(0, _extendedTest.test)("remove svgs option", async () => {
|
|
214
|
+
const html = `<div><svg><circle r="10"/></svg><p>Content</p></div>`;
|
|
215
|
+
const resultRemove = (0, _.sanitizeHtml)({
|
|
216
|
+
html,
|
|
217
|
+
removeSvgs: true
|
|
218
|
+
});
|
|
219
|
+
(0, _extendedTest.expect)(resultRemove).not.toContain("<svg>");
|
|
220
|
+
(0, _extendedTest.expect)(resultRemove).toContain("Content");
|
|
221
|
+
const resultKeep = (0, _.sanitizeHtml)({
|
|
222
|
+
html,
|
|
223
|
+
removeSvgs: false
|
|
224
|
+
});
|
|
225
|
+
(0, _extendedTest.expect)(resultKeep).toContain("<svg>");
|
|
226
|
+
(0, _extendedTest.expect)(resultKeep).toContain("Content");
|
|
227
|
+
});
|
|
228
|
+
(0, _extendedTest.test)("remove comments option", async () => {
|
|
229
|
+
const html = `<div><!-- This is a comment --><p>Content</p></div>`;
|
|
230
|
+
const resultRemove = (0, _.sanitizeHtml)({
|
|
231
|
+
html,
|
|
232
|
+
removeComments: true
|
|
233
|
+
});
|
|
234
|
+
(0, _extendedTest.expect)(resultRemove).not.toContain("<!-- This is a comment -->");
|
|
235
|
+
(0, _extendedTest.expect)(resultRemove).toContain("Content");
|
|
236
|
+
const resultKeep = (0, _.sanitizeHtml)({
|
|
237
|
+
html,
|
|
238
|
+
removeComments: false
|
|
239
|
+
});
|
|
240
|
+
(0, _extendedTest.expect)(resultKeep).toContain("<!-- This is a comment -->");
|
|
241
|
+
(0, _extendedTest.expect)(resultKeep).toContain("Content");
|
|
242
|
+
});
|
|
243
|
+
(0, _extendedTest.test)("max attribute length option", async () => {
|
|
244
|
+
const html = `<div data-long="this-is-a-very-long-attribute-value" data-short="ok" class="test">Content</div>`;
|
|
245
|
+
const result = (0, _.sanitizeHtml)({
|
|
246
|
+
html,
|
|
247
|
+
maxAttributeLength: 10,
|
|
248
|
+
preserveAttributes: ["class", "data-short"]
|
|
249
|
+
});
|
|
250
|
+
(0, _extendedTest.expect)(result).not.toContain("data-long");
|
|
251
|
+
(0, _extendedTest.expect)(result).toContain("data-short");
|
|
252
|
+
(0, _extendedTest.expect)(result).toContain("class");
|
|
253
|
+
(0, _extendedTest.expect)(result).toContain("Content");
|
|
254
|
+
});
|
|
255
|
+
(0, _extendedTest.test)("preserve attributes option", async () => {
|
|
256
|
+
const html = `<div id="test" class="container" data-value="1234567899" style="color: red;">Content</div>`;
|
|
257
|
+
const result = (0, _.sanitizeHtml)({
|
|
258
|
+
html,
|
|
259
|
+
preserveAttributes: ["id", "class", "data-value"],
|
|
260
|
+
maxAttributeLength: 7
|
|
261
|
+
});
|
|
262
|
+
(0, _extendedTest.expect)(result).toContain('id="test"');
|
|
263
|
+
(0, _extendedTest.expect)(result).toContain('class="container"');
|
|
264
|
+
(0, _extendedTest.expect)(result).toContain("data-value");
|
|
265
|
+
(0, _extendedTest.expect)(result).not.toContain("style");
|
|
266
|
+
(0, _extendedTest.expect)(result).toContain("Content");
|
|
267
|
+
});
|
|
268
|
+
(0, _extendedTest.test)("remove empty tags option", async () => {
|
|
269
|
+
const html = `<div><span></span><p>Content</p><div></div></div>`;
|
|
270
|
+
const resultRemove = (0, _.sanitizeHtml)({
|
|
271
|
+
html,
|
|
272
|
+
removeEmptyTags: true
|
|
273
|
+
});
|
|
274
|
+
(0, _extendedTest.expect)(resultRemove).not.toContain("<span></span>");
|
|
275
|
+
(0, _extendedTest.expect)(resultRemove).not.toContain("<div></div>");
|
|
276
|
+
(0, _extendedTest.expect)(resultRemove).toContain("Content");
|
|
277
|
+
const resultKeep = (0, _.sanitizeHtml)({
|
|
278
|
+
html,
|
|
279
|
+
removeEmptyTags: false
|
|
280
|
+
});
|
|
281
|
+
(0, _extendedTest.expect)(resultKeep).toContain("<span></span>");
|
|
282
|
+
(0, _extendedTest.expect)(resultKeep).toContain("Content");
|
|
283
|
+
});
|
|
284
|
+
(0, _extendedTest.test)("minify whitespace option", async () => {
|
|
285
|
+
const html = `<div>
|
|
286
|
+
|
|
287
|
+
<p> Content </p>
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
</div>`;
|
|
291
|
+
const resultMinify = (0, _.sanitizeHtml)({
|
|
292
|
+
html,
|
|
293
|
+
minifyWhitespace: true
|
|
294
|
+
});
|
|
295
|
+
(0, _extendedTest.expect)(resultMinify).not.toContain("\n\n");
|
|
296
|
+
(0, _extendedTest.expect)(resultMinify).not.toContain(" ");
|
|
297
|
+
(0, _extendedTest.expect)(resultMinify).toContain("Content");
|
|
298
|
+
const resultKeep = (0, _.sanitizeHtml)({
|
|
299
|
+
html,
|
|
300
|
+
minifyWhitespace: false
|
|
301
|
+
});
|
|
302
|
+
(0, _extendedTest.expect)(resultKeep).toContain("Content");
|
|
303
|
+
});
|
|
304
|
+
(0, _extendedTest.test)("combined options", async () => {
|
|
305
|
+
const html = `<div>
|
|
306
|
+
<script>alert('test')</script>
|
|
307
|
+
<style>.test { color: red; }</style>
|
|
308
|
+
<!-- comment -->
|
|
309
|
+
<p data-long="${"x".repeat(100)}" class="keep">Content</p>
|
|
310
|
+
<span></span>
|
|
311
|
+
</div>`;
|
|
312
|
+
const result = (0, _.sanitizeHtml)({
|
|
313
|
+
html,
|
|
314
|
+
removeScripts: true,
|
|
315
|
+
removeStyles: false,
|
|
316
|
+
removeComments: true,
|
|
317
|
+
maxAttributeLength: 20,
|
|
318
|
+
preserveAttributes: ["class"],
|
|
319
|
+
removeEmptyTags: true,
|
|
320
|
+
minifyWhitespace: true
|
|
321
|
+
});
|
|
322
|
+
(0, _extendedTest.expect)(result).not.toContain("<script>");
|
|
323
|
+
(0, _extendedTest.expect)(result).toContain("<style>");
|
|
324
|
+
(0, _extendedTest.expect)(result).not.toContain("<!-- comment -->");
|
|
325
|
+
(0, _extendedTest.expect)(result).not.toContain("data-long");
|
|
326
|
+
(0, _extendedTest.expect)(result).toContain('class="keep"');
|
|
327
|
+
(0, _extendedTest.expect)(result).not.toContain("<span></span>");
|
|
328
|
+
(0, _extendedTest.expect)(result).toContain("Content");
|
|
329
|
+
});
|
|
330
|
+
});
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _extendedTest = require("../../common/extendedTest");
|
|
4
|
+
var _ = require("..");
|
|
5
|
+
var _playwrightCore = require("playwright-core");
|
|
6
|
+
var _dotenv = require("dotenv");
|
|
7
|
+
(0, _dotenv.config)();
|
|
8
|
+
const scrollWholePageHtml = `
|
|
9
|
+
<!DOCTYPE html>
|
|
10
|
+
<html>
|
|
11
|
+
<head>
|
|
12
|
+
<style>
|
|
13
|
+
body { margin: 0; padding: 20px; }
|
|
14
|
+
.item { height: 300px; margin: 10px; background: #ddd; padding: 20px; border: 1px solid #999; }
|
|
15
|
+
</style>
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="content">
|
|
19
|
+
<div class="item">Item 1</div>
|
|
20
|
+
<div class="item">Item 2</div>
|
|
21
|
+
<div class="item">Item 3</div>
|
|
22
|
+
<div class="item">Item 4</div>
|
|
23
|
+
<div class="item">Item 5</div>
|
|
24
|
+
<div class="item">Item 6</div>
|
|
25
|
+
</div>
|
|
26
|
+
<script>
|
|
27
|
+
let itemCount = 6;
|
|
28
|
+
let maxItems = 15;
|
|
29
|
+
|
|
30
|
+
window.addEventListener('scroll', () => {
|
|
31
|
+
if (itemCount >= maxItems) return;
|
|
32
|
+
|
|
33
|
+
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
|
34
|
+
const scrollHeight = document.documentElement.scrollHeight;
|
|
35
|
+
const clientHeight = document.documentElement.clientHeight;
|
|
36
|
+
|
|
37
|
+
if (scrollTop + clientHeight >= scrollHeight - 100) {
|
|
38
|
+
itemCount++;
|
|
39
|
+
const newItem = document.createElement('div');
|
|
40
|
+
newItem.className = 'item';
|
|
41
|
+
newItem.textContent = 'Item ' + itemCount;
|
|
42
|
+
document.getElementById('content').appendChild(newItem);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
</script>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
48
|
+
`;
|
|
49
|
+
const scrollSpecificContainerHtml = `
|
|
50
|
+
<!DOCTYPE html>
|
|
51
|
+
<html>
|
|
52
|
+
<head>
|
|
53
|
+
<style>
|
|
54
|
+
body { margin: 0; padding: 20px; }
|
|
55
|
+
#scrollable-container {
|
|
56
|
+
height: 400px;
|
|
57
|
+
overflow-y: auto;
|
|
58
|
+
border: 2px solid #333;
|
|
59
|
+
padding: 10px;
|
|
60
|
+
}
|
|
61
|
+
.container-item { height: 150px; margin: 10px; background: #aaf; padding: 15px; }
|
|
62
|
+
</style>
|
|
63
|
+
</head>
|
|
64
|
+
<body>
|
|
65
|
+
<h1>Container Scroll Test</h1>
|
|
66
|
+
<div id="scrollable-container">
|
|
67
|
+
<div class="container-item">Container Item 1</div>
|
|
68
|
+
<div class="container-item">Container Item 2</div>
|
|
69
|
+
<div class="container-item">Container Item 3</div>
|
|
70
|
+
</div>
|
|
71
|
+
<script>
|
|
72
|
+
let containerItemCount = 3;
|
|
73
|
+
let maxContainerItems = 8;
|
|
74
|
+
const container = document.getElementById('scrollable-container');
|
|
75
|
+
|
|
76
|
+
container.addEventListener('scroll', () => {
|
|
77
|
+
if (containerItemCount >= maxContainerItems) return;
|
|
78
|
+
|
|
79
|
+
if (container.scrollTop + container.clientHeight >= container.scrollHeight - 50) {
|
|
80
|
+
containerItemCount++;
|
|
81
|
+
const newItem = document.createElement('div');
|
|
82
|
+
newItem.className = 'container-item';
|
|
83
|
+
newItem.textContent = 'Container Item ' + containerItemCount;
|
|
84
|
+
container.appendChild(newItem);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
</script>
|
|
88
|
+
</body>
|
|
89
|
+
</html>
|
|
90
|
+
`;
|
|
91
|
+
(0, _extendedTest.describe)("scrollToLoadContent E2E Tests", () => {
|
|
92
|
+
let browser;
|
|
93
|
+
let page;
|
|
94
|
+
(0, _extendedTest.beforeAll)(async () => {
|
|
95
|
+
browser = await _playwrightCore.chromium.launch({
|
|
96
|
+
headless: true
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
(0, _extendedTest.afterAll)(async () => {
|
|
100
|
+
await browser.close();
|
|
101
|
+
});
|
|
102
|
+
(0, _extendedTest.beforeEach)(async () => {
|
|
103
|
+
page = await browser.newPage();
|
|
104
|
+
});
|
|
105
|
+
(0, _extendedTest.afterEach)(async () => {
|
|
106
|
+
await page.close();
|
|
107
|
+
});
|
|
108
|
+
(0, _extendedTest.describe)("scrollToLoadContent", () => {
|
|
109
|
+
(0, _extendedTest.test)("should scroll whole page with default parameters", async () => {
|
|
110
|
+
await page.setContent(scrollWholePageHtml);
|
|
111
|
+
const initialCount = await page.locator(".item").count();
|
|
112
|
+
(0, _extendedTest.expect)(initialCount).toBe(6);
|
|
113
|
+
await (0, _.scrollToLoadContent)({
|
|
114
|
+
source: page
|
|
115
|
+
});
|
|
116
|
+
const finalCount = await page.locator(".item").count();
|
|
117
|
+
(0, _extendedTest.expect)(finalCount).toBeGreaterThan(initialCount);
|
|
118
|
+
(0, _extendedTest.expect)(finalCount).toBeLessThanOrEqual(15);
|
|
119
|
+
});
|
|
120
|
+
(0, _extendedTest.test)("should scroll whole page with custom parameters", async () => {
|
|
121
|
+
await page.setContent(scrollWholePageHtml);
|
|
122
|
+
const scrollProgressCalls = [];
|
|
123
|
+
const onProgress = () => {
|
|
124
|
+
scrollProgressCalls.push(1);
|
|
125
|
+
};
|
|
126
|
+
await (0, _.scrollToLoadContent)({
|
|
127
|
+
source: page,
|
|
128
|
+
maxScrolls: 3,
|
|
129
|
+
onScrollProgress: onProgress,
|
|
130
|
+
delayInMs: 50
|
|
131
|
+
});
|
|
132
|
+
(0, _extendedTest.expect)(scrollProgressCalls.length).toBeGreaterThan(0);
|
|
133
|
+
(0, _extendedTest.expect)(scrollProgressCalls.length).toBeLessThanOrEqual(3);
|
|
134
|
+
const finalCount = await page.locator(".item").count();
|
|
135
|
+
(0, _extendedTest.expect)(finalCount).toBeGreaterThanOrEqual(6);
|
|
136
|
+
});
|
|
137
|
+
(0, _extendedTest.test)("should scroll container with default parameters", async () => {
|
|
138
|
+
await page.setContent(scrollSpecificContainerHtml);
|
|
139
|
+
const container = page.locator("#scrollable-container");
|
|
140
|
+
const initialCount = await page.locator(".container-item").count();
|
|
141
|
+
(0, _extendedTest.expect)(initialCount).toBe(3);
|
|
142
|
+
await (0, _.scrollToLoadContent)({
|
|
143
|
+
source: container
|
|
144
|
+
});
|
|
145
|
+
const finalCount = await page.locator(".container-item").count();
|
|
146
|
+
(0, _extendedTest.expect)(finalCount).toBeGreaterThan(initialCount);
|
|
147
|
+
(0, _extendedTest.expect)(finalCount).toBeLessThanOrEqual(8);
|
|
148
|
+
});
|
|
149
|
+
(0, _extendedTest.test)("should scroll container with custom parameters", async () => {
|
|
150
|
+
await page.setContent(scrollSpecificContainerHtml);
|
|
151
|
+
const container = page.locator("#scrollable-container");
|
|
152
|
+
const initialCount = await page.locator(".container-item").count();
|
|
153
|
+
await (0, _.scrollToLoadContent)({
|
|
154
|
+
source: container,
|
|
155
|
+
minHeightChange: 50,
|
|
156
|
+
delayInMs: 200,
|
|
157
|
+
maxScrolls: 10
|
|
158
|
+
});
|
|
159
|
+
const finalCount = await page.locator(".container-item").count();
|
|
160
|
+
(0, _extendedTest.expect)(finalCount).toBeGreaterThan(initialCount);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
});
|