@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.
Files changed (212) hide show
  1. package/.babelrc +21 -0
  2. package/.eslintignore +10 -0
  3. package/.eslintrc.js +39 -0
  4. package/BROWSER_SCRIPTS_SETUP.md +84 -0
  5. package/LICENSE +43 -0
  6. package/README.md +160 -0
  7. package/RELEASE.md +60 -0
  8. package/dist/ai/export.d.js +5 -0
  9. package/dist/ai/export.d.ts +641 -0
  10. package/dist/ai/extractStructuredData.js +320 -0
  11. package/dist/ai/extractStructuredDataUsingAi.js +142 -0
  12. package/dist/ai/extractionHelpers/screenshotHelpers.js +56 -0
  13. package/dist/ai/extractionHelpers/validateSchema.js +148 -0
  14. package/dist/ai/index.d.ts +641 -0
  15. package/dist/ai/index.js +19 -0
  16. package/dist/ai/isPageLoaded.js +80 -0
  17. package/dist/ai/prompt.js +39 -0
  18. package/dist/ai/tests/testCheckAllTypesAreStrings.spec.js +137 -0
  19. package/dist/ai/tests/testExtractFromContent.spec.js +372 -0
  20. package/dist/ai/tests/testExtractStructuredData.spec.js +646 -0
  21. package/dist/ai/tests/testIsPageLoaded.spec.js +277 -0
  22. package/dist/ai/tools/index.js +48 -0
  23. package/dist/ai/types/errors.js +67 -0
  24. package/dist/ai/types/models.js +45 -0
  25. package/dist/ai/types/types.js +48 -0
  26. package/dist/ai/validators.js +167 -0
  27. package/dist/common/Logger/index.js +60 -0
  28. package/dist/common/Logger/types.js +5 -0
  29. package/dist/common/SdkError.js +50 -0
  30. package/dist/common/aiModelsValidations.js +32 -0
  31. package/dist/common/ensureBrowserScripts.js +14 -0
  32. package/dist/common/extendedTest.js +157 -0
  33. package/dist/common/extractionHelpers.js +19 -0
  34. package/dist/common/formatZodError.js +18 -0
  35. package/dist/common/fuzzySearch/fuzzySearch.test.js +250 -0
  36. package/dist/common/fuzzySearch/levenshtein-search.js +298 -0
  37. package/dist/common/fuzzySearch/utils.js +23 -0
  38. package/dist/common/getModelProvider.js +18 -0
  39. package/dist/common/getSimplifiedHtml.js +122 -0
  40. package/dist/common/hashObject.js +32 -0
  41. package/dist/common/html2markdown/convertElementToMarkdown.js +469 -0
  42. package/dist/common/html2markdown/index.js +19 -0
  43. package/dist/common/jwtTokenManager.js +57 -0
  44. package/dist/common/loadRuntime.js +16 -0
  45. package/dist/common/locatorHelpers.js +41 -0
  46. package/dist/common/matching/collectStrings.js +32 -0
  47. package/dist/common/matching/levenshtein.js +40 -0
  48. package/dist/common/matching/matching.js +317 -0
  49. package/dist/common/matching/types.js +1 -0
  50. package/dist/common/noEmpty.js +9 -0
  51. package/dist/common/saveSnapshotWithExamples.js +60 -0
  52. package/dist/common/script.js +2602 -0
  53. package/dist/common/tests/testEnsureBrowserScript.spec.js +31 -0
  54. package/dist/common/xpathMapping.js +107 -0
  55. package/dist/helpers/clickUntilExhausted.js +85 -0
  56. package/dist/helpers/downloadFile.js +125 -0
  57. package/dist/helpers/export.d.js +5 -0
  58. package/dist/helpers/export.d.ts +1220 -0
  59. package/dist/helpers/extractMarkdown.js +35 -0
  60. package/dist/helpers/filterEmptyValues.js +54 -0
  61. package/dist/helpers/gotoUrl.js +98 -0
  62. package/dist/helpers/index.d.ts +1220 -0
  63. package/dist/helpers/index.js +122 -0
  64. package/dist/helpers/processDate.js +25 -0
  65. package/dist/helpers/resolveUrl.js +64 -0
  66. package/dist/helpers/sanitizeHtml.js +74 -0
  67. package/dist/helpers/saveFileToS3.js +50 -0
  68. package/dist/helpers/scrollToLoadContent.js +57 -0
  69. package/dist/helpers/tests/testClickUntilExhausted.spec.js +372 -0
  70. package/dist/helpers/tests/testDownloadFile.spec.js +206 -0
  71. package/dist/helpers/tests/testExtractMarkdown.spec.js +290 -0
  72. package/dist/helpers/tests/testFilterEmptyValues.spec.js +151 -0
  73. package/dist/helpers/tests/testGoToUrl.spec.js +37 -0
  74. package/dist/helpers/tests/testProcessDate.spec.js +13 -0
  75. package/dist/helpers/tests/testResolveUrl.spec.js +341 -0
  76. package/dist/helpers/tests/testSanitizeHtml.spec.js +330 -0
  77. package/dist/helpers/tests/testScrollToLoadContent.spec.js +163 -0
  78. package/dist/helpers/tests/testValidateDataUsingSchema.spec.js +342 -0
  79. package/dist/helpers/tests/testWithDomSettledWait.spec.js +164 -0
  80. package/dist/helpers/tests/testWithNetworkIdleWait.spec.js +114 -0
  81. package/dist/helpers/types/Attachment.js +115 -0
  82. package/dist/helpers/types/CustomTypeRegistry.js +48 -0
  83. package/dist/helpers/types/RunEnvironment.js +18 -0
  84. package/dist/helpers/types/ValidationError.js +17 -0
  85. package/dist/helpers/types/index.js +51 -0
  86. package/dist/helpers/uploadFileToS3.js +154 -0
  87. package/dist/helpers/utils/getS3Client.js +22 -0
  88. package/dist/helpers/utils/index.js +73 -0
  89. package/dist/helpers/utils/isDownload.js +10 -0
  90. package/dist/helpers/utils/isGenerateCodeMode.js +9 -0
  91. package/dist/helpers/utils/isLocator.js +9 -0
  92. package/dist/helpers/utils/jwtTokenManager.js +18 -0
  93. package/dist/helpers/validateDataUsingSchema.js +103 -0
  94. package/dist/helpers/waitForDomSettled.js +90 -0
  95. package/dist/helpers/withNetworkSettledWait.js +91 -0
  96. package/dist/index.d.js +16 -0
  97. package/dist/index.d.ts +10 -0
  98. package/dist/index.js +16 -0
  99. package/dist/intunedServices/ApiGateway/aiApiGateway.js +143 -0
  100. package/dist/intunedServices/ApiGateway/factory.js +16 -0
  101. package/dist/intunedServices/ApiGateway/providers/Anthropic.js +26 -0
  102. package/dist/intunedServices/ApiGateway/providers/Gemini.js +29 -0
  103. package/dist/intunedServices/ApiGateway/providers/OpenAI.js +29 -0
  104. package/dist/intunedServices/ApiGateway/tests/testApiGateway.spec.js +355 -0
  105. package/dist/intunedServices/ApiGateway/types.js +11 -0
  106. package/dist/intunedServices/cache/cache.js +61 -0
  107. package/dist/intunedServices/cache/index.js +12 -0
  108. package/dist/intunedServices/cache/tests/testCache.spec.js +117 -0
  109. package/dist/optimized-extractors/common/buildExamplesPrompt.js +12 -0
  110. package/dist/optimized-extractors/common/buildImagesFromPage.js +55 -0
  111. package/dist/optimized-extractors/common/extractStructuredDataUsingClaude.js +135 -0
  112. package/dist/optimized-extractors/common/extractStructuredDataUsingGoogle.js +37 -0
  113. package/dist/optimized-extractors/common/extractStructuredDataUsingOpenAi.js +132 -0
  114. package/dist/optimized-extractors/common/extractStrucutredDataUsingAiInstance.js +122 -0
  115. package/dist/optimized-extractors/common/findTableHeaders.js +162 -0
  116. package/dist/optimized-extractors/common/index.js +55 -0
  117. package/dist/optimized-extractors/common/isTableHeaderOrFooter.js +84 -0
  118. package/dist/optimized-extractors/common/matching/matching.js +212 -0
  119. package/dist/optimized-extractors/common/matching/matching.test.js +655 -0
  120. package/dist/optimized-extractors/common/matching/types.js +18 -0
  121. package/dist/optimized-extractors/common/matching/utils.js +184 -0
  122. package/dist/optimized-extractors/common/utils.js +58 -0
  123. package/dist/optimized-extractors/export.d.js +5 -0
  124. package/dist/optimized-extractors/export.d.ts +397 -0
  125. package/dist/optimized-extractors/extractArray.js +120 -0
  126. package/dist/optimized-extractors/extractObject.js +104 -0
  127. package/dist/optimized-extractors/index.d.ts +397 -0
  128. package/dist/optimized-extractors/index.js +31 -0
  129. package/dist/optimized-extractors/listExtractionHelpers/__tests__/dynamicListExtractor.spec.js +269 -0
  130. package/dist/optimized-extractors/listExtractionHelpers/__tests__/findSetOfXpathsToCreateAnArrayExtractor.test.js +22 -0
  131. package/dist/optimized-extractors/listExtractionHelpers/__tests__/getContainerElement.test.js +21 -0
  132. package/dist/optimized-extractors/listExtractionHelpers/__tests__/partOfSameArrayXpath.test.js +42 -0
  133. package/dist/optimized-extractors/listExtractionHelpers/__tests__/testArrayExtractorFromLocator.spec.js +146 -0
  134. package/dist/optimized-extractors/listExtractionHelpers/__tests__/testArrayExtractorFromPage.spec.js +130 -0
  135. package/dist/optimized-extractors/listExtractionHelpers/__tests__/verifyThatAllXpathsArePartOfSameArray.test.js +9 -0
  136. package/dist/optimized-extractors/listExtractionHelpers/dynamicListExtractor.js +160 -0
  137. package/dist/optimized-extractors/listExtractionHelpers/errors.js +46 -0
  138. package/dist/optimized-extractors/listExtractionHelpers/getListMatches.js +14 -0
  139. package/dist/optimized-extractors/listExtractionHelpers/runAiExtraction.js +243 -0
  140. package/dist/optimized-extractors/listExtractionHelpers/typesAndSchema.js +5 -0
  141. package/dist/optimized-extractors/listExtractionHelpers/utils/extractPropertiesUsingGPTFromArray.js +277 -0
  142. package/dist/optimized-extractors/listExtractionHelpers/utils/extractStructuredListUsingAi.js +44 -0
  143. package/dist/optimized-extractors/listExtractionHelpers/utils/getListContainerXpath.js +94 -0
  144. package/dist/optimized-extractors/listExtractionHelpers/utils/getRelativeContainerXpathSelector.js +20 -0
  145. package/dist/optimized-extractors/listExtractionHelpers/utils/getSimplifiedHtmlPerListItem.js +21 -0
  146. package/dist/optimized-extractors/listExtractionHelpers/utils/tablesUtils.js +48 -0
  147. package/dist/optimized-extractors/listExtractionHelpers/utils/validateOptions.js +52 -0
  148. package/dist/optimized-extractors/models/anthropicModel.js +23 -0
  149. package/dist/optimized-extractors/models/openaiModel.js +23 -0
  150. package/dist/optimized-extractors/objectExtractionHelpers/AIExtractors.js +73 -0
  151. package/dist/optimized-extractors/objectExtractionHelpers/__tests__/checksumUtils.test.js +103 -0
  152. package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromLocator.spec.js +107 -0
  153. package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromPage.spec.js +107 -0
  154. package/dist/optimized-extractors/objectExtractionHelpers/calculateObjectExampleHash.js +28 -0
  155. package/dist/optimized-extractors/objectExtractionHelpers/captureSnapshot.js +26 -0
  156. package/dist/optimized-extractors/objectExtractionHelpers/checksumUtils.js +32 -0
  157. package/dist/optimized-extractors/objectExtractionHelpers/constants.js +7 -0
  158. package/dist/optimized-extractors/objectExtractionHelpers/dynamicObjectExtractor.js +106 -0
  159. package/dist/optimized-extractors/objectExtractionHelpers/errors.js +42 -0
  160. package/dist/optimized-extractors/objectExtractionHelpers/findDomMatches.js +54 -0
  161. package/dist/optimized-extractors/objectExtractionHelpers/getSimplifiedHtml.js +122 -0
  162. package/dist/optimized-extractors/objectExtractionHelpers/typesAndSchemas.js +5 -0
  163. package/dist/optimized-extractors/objectExtractionHelpers/validateDynamicObjectExtractorOptions.js +52 -0
  164. package/dist/optimized-extractors/types/aiModelsValidation.js +45 -0
  165. package/dist/optimized-extractors/types/errors.js +42 -0
  166. package/dist/optimized-extractors/types/jsonSchema.d.js +5 -0
  167. package/dist/optimized-extractors/types/jsonSchema.d.ts +50 -0
  168. package/dist/optimized-extractors/types/types.js +5 -0
  169. package/dist/optimized-extractors/validators.js +152 -0
  170. package/dist/types/intuned-runtime.d.js +1 -0
  171. package/dist/types/intuned-runtime.d.ts +64 -0
  172. package/dist/vite-env.d.js +1 -0
  173. package/dist/vite-env.d.ts +9 -0
  174. package/generated-docs/ai/functions/extractStructuredData.mdx +255 -0
  175. package/generated-docs/ai/functions/isPageLoaded.mdx +88 -0
  176. package/generated-docs/ai/interfaces/ArraySchema.mdx +36 -0
  177. package/generated-docs/ai/interfaces/BasicSchema.mdx +14 -0
  178. package/generated-docs/ai/interfaces/BooleanSchema.mdx +28 -0
  179. package/generated-docs/ai/interfaces/ImageBufferContentItem.mdx +16 -0
  180. package/generated-docs/ai/interfaces/ImageUrlContentItem.mdx +16 -0
  181. package/generated-docs/ai/interfaces/NumberSchema.mdx +35 -0
  182. package/generated-docs/ai/interfaces/ObjectSchema.mdx +39 -0
  183. package/generated-docs/ai/interfaces/StringSchema.mdx +35 -0
  184. package/generated-docs/ai/interfaces/TextContentItem.mdx +14 -0
  185. package/generated-docs/ai/type-aliases/ContentItem.mdx +12 -0
  186. package/generated-docs/ai/type-aliases/JsonSchema.mdx +47 -0
  187. package/generated-docs/ai/type-aliases/SUPPORTED_MODELS.mdx +85 -0
  188. package/generated-docs/helpers/functions/downloadFile.mdx +99 -0
  189. package/generated-docs/helpers/functions/extractMarkdown.mdx +56 -0
  190. package/generated-docs/helpers/functions/filterEmptyValues.mdx +51 -0
  191. package/generated-docs/helpers/functions/goToUrl.mdx +124 -0
  192. package/generated-docs/helpers/functions/processDate.mdx +55 -0
  193. package/generated-docs/helpers/functions/resolveUrl.mdx +165 -0
  194. package/generated-docs/helpers/functions/sanitizeHtml.mdx +113 -0
  195. package/generated-docs/helpers/functions/saveFileToS3.mdx +127 -0
  196. package/generated-docs/helpers/functions/scrollToLoadContent.mdx +89 -0
  197. package/generated-docs/helpers/functions/uploadFileToS3.mdx +121 -0
  198. package/generated-docs/helpers/functions/validateDataUsingSchema.mdx +90 -0
  199. package/generated-docs/helpers/functions/waitForDomSettled.mdx +91 -0
  200. package/generated-docs/helpers/functions/withNetworkSettledWait.mdx +76 -0
  201. package/generated-docs/helpers/interfaces/Attachment.mdx +56 -0
  202. package/generated-docs/helpers/interfaces/S3Configs.mdx +52 -0
  203. package/generated-docs/helpers/interfaces/SanitizeHtmlOptions.mdx +22 -0
  204. package/generated-docs/helpers/type-aliases/AttachmentType.mdx +10 -0
  205. package/generated-docs/helpers/type-aliases/FileType.mdx +61 -0
  206. package/generated-docs/helpers/type-aliases/Trigger.mdx +62 -0
  207. package/how-to-generate-docs.md +61 -0
  208. package/how-to-run-tests.md +42 -0
  209. package/intuned-runtime-setup.md +13 -0
  210. package/package.json +124 -0
  211. package/tsconfig.eslint.json +5 -0
  212. 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&amp;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&amp;width=360 360w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&amp;width=533 533w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&amp;width=668 668w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&amp;width=720 720w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&amp;width=940 940w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&amp;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&amp;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&amp;width=360 360w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&amp;width=533 533w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&amp;width=668 668w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&amp;width=720 720w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&amp;width=940 940w, //www.babyfresh.co/cdn/shop/files/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&amp;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="[{&quot;name&quot;:&quot;Talla&quot;,&quot;position&quot;:1,&quot;values&quot;:[&quot;0-3M&quot;,&quot;3-6M&quot;,&quot;6-9M&quot;,&quot;9-12M&quot;,&quot;12-18M&quot;,&quot;18-24M&quot;]}]"
129
+ data-compare-price="8999000" data-price-min="" data-price-max=""
130
+ data-product="{&quot;id&quot;:9493229895974,&quot;title&quot;:&quot;Vestido con body y manga corta rosado&quot;,&quot;handle&quot;:&quot;745049-015520&quot;,&quot;description&quot;:&quot;\\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&quot;,&quot;published_at&quot;:&quot;2024-07-24T10:10:16-05:00&quot;,&quot;created_at&quot;:&quot;2024-07-23T16:16:36-05:00&quot;,&quot;vendor&quot;:&quot;Baby Fresh&quot;,&quot;type&quot;:&quot;Bebitas&quot;,&quot;tags&quot;:[&quot;0-3M&quot;,&quot;12-18M&quot;,&quot;18-24M&quot;,&quot;3-6M&quot;,&quot;6-9M&quot;,&quot;9-12M&quot;,&quot;Bebé niña&quot;,&quot;Fexar&quot;,&quot;Kilogramos&quot;,&quot;Prueba&quot;,&quot;Vestidos&quot;],&quot;price&quot;:8999000,&quot;price_min&quot;:8999000,&quot;price_max&quot;:8999000,&quot;available&quot;:true,&quot;price_varies&quot;:false,&quot;compare_at_price&quot;:8999000,&quot;compare_at_price_min&quot;:8999000,&quot;compare_at_price_max&quot;:8999000,&quot;compare_at_price_varies&quot;:false,&quot;variants&quot;:[{&quot;id&quot;:49284929290534,&quot;title&quot;:&quot;0-3M&quot;,&quot;option1&quot;:&quot;0-3M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259093993&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 0-3M&quot;,&quot;public_title&quot;:&quot;0-3M&quot;,&quot;options&quot;:[&quot;0-3M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929323302,&quot;title&quot;:&quot;3-6M&quot;,&quot;option1&quot;:&quot;3-6M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094013&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 3-6M&quot;,&quot;public_title&quot;:&quot;3-6M&quot;,&quot;options&quot;:[&quot;3-6M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929356070,&quot;title&quot;:&quot;6-9M&quot;,&quot;option1&quot;:&quot;6-9M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094037&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 6-9M&quot;,&quot;public_title&quot;:&quot;6-9M&quot;,&quot;options&quot;:[&quot;6-9M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929388838,&quot;title&quot;:&quot;9-12M&quot;,&quot;option1&quot;:&quot;9-12M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094075&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 9-12M&quot;,&quot;public_title&quot;:&quot;9-12M&quot;,&quot;options&quot;:[&quot;9-12M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929421606,&quot;title&quot;:&quot;12-18M&quot;,&quot;option1&quot;:&quot;12-18M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094112&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 12-18M&quot;,&quot;public_title&quot;:&quot;12-18M&quot;,&quot;options&quot;:[&quot;12-18M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929454374,&quot;title&quot;:&quot;18-24M&quot;,&quot;option1&quot;:&quot;18-24M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094150&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 18-24M&quot;,&quot;public_title&quot;:&quot;18-24M&quot;,&quot;options&quot;:[&quot;18-24M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}}],&quot;images&quot;:[&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-3.jpg?v=1721784699&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-4.jpg?v=1721784699&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-5_2e9bd38b-0ec7-40e9-9e15-5413d3ea4f3f.jpg?v=1724944530&quot;],&quot;featured_image&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&quot;,&quot;options&quot;:[&quot;Talla&quot;],&quot;media&quot;:[{&quot;alt&quot;:null,&quot;id&quot;:40256577470758,&quot;position&quot;:1,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-1.jpg?v=1721784699&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256577536294,&quot;position&quot;:2,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-2.jpg?v=1721784699&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256577569062,&quot;position&quot;:3,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-3.jpg?v=1721784699&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-3.jpg?v=1721784699&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256577601830,&quot;position&quot;:4,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-4.jpg?v=1721784699&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-4.jpg?v=1721784699&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40599026630950,&quot;position&quot;:5,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-5_2e9bd38b-0ec7-40e9-9e15-5413d3ea4f3f.jpg?v=1724944530&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-rosado-15520-745049_015520-5_2e9bd38b-0ec7-40e9-9e15-5413d3ea4f3f.jpg?v=1724944530&quot;,&quot;width&quot;:1000}],&quot;requires_selling_plan&quot;:false,&quot;selling_plan_groups&quot;:[],&quot;content&quot;:&quot;\\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&quot;}"
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&amp;width=270"
133
+ data-price="8999000" data-ratio="1" data-new=""
134
+ data-variants="[[{&quot;id&quot;:49284929290534,&quot;title&quot;:&quot;0-3M&quot;,&quot;option1&quot;:&quot;0-3M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259093993&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 0-3M&quot;,&quot;public_title&quot;:&quot;0-3M&quot;,&quot;options&quot;:[&quot;0-3M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929323302,&quot;title&quot;:&quot;3-6M&quot;,&quot;option1&quot;:&quot;3-6M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094013&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 3-6M&quot;,&quot;public_title&quot;:&quot;3-6M&quot;,&quot;options&quot;:[&quot;3-6M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929356070,&quot;title&quot;:&quot;6-9M&quot;,&quot;option1&quot;:&quot;6-9M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094037&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 6-9M&quot;,&quot;public_title&quot;:&quot;6-9M&quot;,&quot;options&quot;:[&quot;6-9M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929388838,&quot;title&quot;:&quot;9-12M&quot;,&quot;option1&quot;:&quot;9-12M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094075&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 9-12M&quot;,&quot;public_title&quot;:&quot;9-12M&quot;,&quot;options&quot;:[&quot;9-12M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929421606,&quot;title&quot;:&quot;12-18M&quot;,&quot;option1&quot;:&quot;12-18M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094112&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 12-18M&quot;,&quot;public_title&quot;:&quot;12-18M&quot;,&quot;options&quot;:[&quot;12-18M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929454374,&quot;title&quot;:&quot;18-24M&quot;,&quot;option1&quot;:&quot;18-24M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094150&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta rosado - 18-24M&quot;,&quot;public_title&quot;:&quot;18-24M&quot;,&quot;options&quot;:[&quot;18-24M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-015520&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;: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&amp;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="[{&quot;name&quot;:&quot;Talla&quot;,&quot;position&quot;:1,&quot;values&quot;:[&quot;0-3M&quot;,&quot;3-6M&quot;,&quot;6-9M&quot;,&quot;9-12M&quot;,&quot;12-18M&quot;,&quot;18-24M&quot;]}]"
141
+ data-compare-price="7999000" data-price-min="" data-price-max=""
142
+ data-product="{&quot;id&quot;:9493230092582,&quot;title&quot;:&quot;Vestido con body y manga corta beige estampado&quot;,&quot;handle&quot;:&quot;745049-040769&quot;,&quot;description&quot;:&quot;\\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&quot;,&quot;published_at&quot;:&quot;2024-08-12T12:52:44-05:00&quot;,&quot;created_at&quot;:&quot;2024-07-23T16:16:39-05:00&quot;,&quot;vendor&quot;:&quot;Baby Fresh&quot;,&quot;type&quot;:&quot;Bebitas&quot;,&quot;tags&quot;:[&quot;0-3M&quot;,&quot;12-18M&quot;,&quot;18-24M&quot;,&quot;3-6M&quot;,&quot;6-9M&quot;,&quot;9-12M&quot;,&quot;Bebé niña&quot;,&quot;Fexar&quot;,&quot;Kilogramos&quot;,&quot;Oferta&quot;,&quot;Prueba&quot;,&quot;Vestidos&quot;],&quot;price&quot;:6999000,&quot;price_min&quot;:6999000,&quot;price_max&quot;:6999000,&quot;available&quot;:true,&quot;price_varies&quot;:false,&quot;compare_at_price&quot;:7999000,&quot;compare_at_price_min&quot;:7999000,&quot;compare_at_price_max&quot;:7999000,&quot;compare_at_price_varies&quot;:false,&quot;variants&quot;:[{&quot;id&quot;:49284929650982,&quot;title&quot;:&quot;0-3M&quot;,&quot;option1&quot;:&quot;0-3M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094006&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 0-3M&quot;,&quot;public_title&quot;:&quot;0-3M&quot;,&quot;options&quot;:[&quot;0-3M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929683750,&quot;title&quot;:&quot;3-6M&quot;,&quot;option1&quot;:&quot;3-6M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094020&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 3-6M&quot;,&quot;public_title&quot;:&quot;3-6M&quot;,&quot;options&quot;:[&quot;3-6M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929716518,&quot;title&quot;:&quot;6-9M&quot;,&quot;option1&quot;:&quot;6-9M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094051&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 6-9M&quot;,&quot;public_title&quot;:&quot;6-9M&quot;,&quot;options&quot;:[&quot;6-9M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929749286,&quot;title&quot;:&quot;9-12M&quot;,&quot;option1&quot;:&quot;9-12M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094099&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 9-12M&quot;,&quot;public_title&quot;:&quot;9-12M&quot;,&quot;options&quot;:[&quot;9-12M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929782054,&quot;title&quot;:&quot;12-18M&quot;,&quot;option1&quot;:&quot;12-18M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094136&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 12-18M&quot;,&quot;public_title&quot;:&quot;12-18M&quot;,&quot;options&quot;:[&quot;12-18M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929814822,&quot;title&quot;:&quot;18-24M&quot;,&quot;option1&quot;:&quot;18-24M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094174&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 18-24M&quot;,&quot;public_title&quot;:&quot;18-24M&quot;,&quot;options&quot;:[&quot;18-24M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}}],&quot;images&quot;:[&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2_717dc0ac-a641-4025-bf01-d11a9445d416.jpg?v=1725462754&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2.jpg?v=1721784690&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-3.jpg?v=1721784690&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-4.jpg?v=1721784690&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-5.jpg?v=1721784690&quot;],&quot;featured_image&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690&quot;,&quot;options&quot;:[&quot;Talla&quot;],&quot;media&quot;:[{&quot;alt&quot;:null,&quot;id&quot;:40256576323878,&quot;position&quot;:1,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-1.jpg?v=1721784690&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40641627390246,&quot;position&quot;:2,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2_717dc0ac-a641-4025-bf01-d11a9445d416.jpg?v=1725462754&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2_717dc0ac-a641-4025-bf01-d11a9445d416.jpg?v=1725462754&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256576356646,&quot;position&quot;:3,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2.jpg?v=1721784690&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-2.jpg?v=1721784690&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256576389414,&quot;position&quot;:4,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-3.jpg?v=1721784690&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-3.jpg?v=1721784690&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256576422182,&quot;position&quot;:5,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-4.jpg?v=1721784690&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-4.jpg?v=1721784690&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40256576454950,&quot;position&quot;:6,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-5.jpg?v=1721784690&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-40769-745049_040769-5.jpg?v=1721784690&quot;,&quot;width&quot;:1000}],&quot;requires_selling_plan&quot;:false,&quot;selling_plan_groups&quot;:[],&quot;content&quot;:&quot;\\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&quot;}"
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&amp;width=270"
145
+ data-price="6999000" data-ratio="1" data-new=""
146
+ data-variants="[[{&quot;id&quot;:49284929650982,&quot;title&quot;:&quot;0-3M&quot;,&quot;option1&quot;:&quot;0-3M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094006&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 0-3M&quot;,&quot;public_title&quot;:&quot;0-3M&quot;,&quot;options&quot;:[&quot;0-3M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929683750,&quot;title&quot;:&quot;3-6M&quot;,&quot;option1&quot;:&quot;3-6M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094020&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 3-6M&quot;,&quot;public_title&quot;:&quot;3-6M&quot;,&quot;options&quot;:[&quot;3-6M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929716518,&quot;title&quot;:&quot;6-9M&quot;,&quot;option1&quot;:&quot;6-9M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094051&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 6-9M&quot;,&quot;public_title&quot;:&quot;6-9M&quot;,&quot;options&quot;:[&quot;6-9M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929749286,&quot;title&quot;:&quot;9-12M&quot;,&quot;option1&quot;:&quot;9-12M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094099&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 9-12M&quot;,&quot;public_title&quot;:&quot;9-12M&quot;,&quot;options&quot;:[&quot;9-12M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929782054,&quot;title&quot;:&quot;12-18M&quot;,&quot;option1&quot;:&quot;12-18M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094136&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 12-18M&quot;,&quot;public_title&quot;:&quot;12-18M&quot;,&quot;options&quot;:[&quot;12-18M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49284929814822,&quot;title&quot;:&quot;18-24M&quot;,&quot;option1&quot;:&quot;18-24M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259094174&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 18-24M&quot;,&quot;public_title&quot;:&quot;18-24M&quot;,&quot;options&quot;:[&quot;18-24M&quot;],&quot;price&quot;:6999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:7999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-040769&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;: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&amp;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="[{&quot;name&quot;:&quot;Talla&quot;,&quot;position&quot;:1,&quot;values&quot;:[&quot;0-3M&quot;,&quot;3-6M&quot;,&quot;6-9M&quot;,&quot;9-12M&quot;,&quot;12-18M&quot;,&quot;18-24M&quot;]}]"
153
+ data-compare-price="8999000" data-price-min="" data-price-max=""
154
+ data-product="{&quot;id&quot;:9493297201446,&quot;title&quot;:&quot;Vestido con body y manga corta beige estampado&quot;,&quot;handle&quot;:&quot;745049-046593&quot;,&quot;description&quot;:&quot;\\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&quot;,&quot;published_at&quot;:&quot;2024-08-24T08:20:26-05:00&quot;,&quot;created_at&quot;:&quot;2024-07-23T16:39:26-05:00&quot;,&quot;vendor&quot;:&quot;Baby Fresh&quot;,&quot;type&quot;:&quot;Bebitas&quot;,&quot;tags&quot;:[&quot;0-3M&quot;,&quot;12-18M&quot;,&quot;18-24M&quot;,&quot;3-6M&quot;,&quot;6-9M&quot;,&quot;9-12M&quot;,&quot;Bautizo&quot;,&quot;Bebé niña&quot;,&quot;Fexar&quot;,&quot;Kilogramos&quot;,&quot;Prueba&quot;,&quot;Vestidos&quot;],&quot;price&quot;:8999000,&quot;price_min&quot;:8999000,&quot;price_max&quot;:8999000,&quot;available&quot;:true,&quot;price_varies&quot;:false,&quot;compare_at_price&quot;:8999000,&quot;compare_at_price_min&quot;:8999000,&quot;compare_at_price_max&quot;:8999000,&quot;compare_at_price_varies&quot;:false,&quot;variants&quot;:[{&quot;id&quot;:49285132615974,&quot;title&quot;:&quot;0-3M&quot;,&quot;option1&quot;:&quot;0-3M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191217&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 0-3M&quot;,&quot;public_title&quot;:&quot;0-3M&quot;,&quot;options&quot;:[&quot;0-3M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132648742,&quot;title&quot;:&quot;3-6M&quot;,&quot;option1&quot;:&quot;3-6M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191224&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 3-6M&quot;,&quot;public_title&quot;:&quot;3-6M&quot;,&quot;options&quot;:[&quot;3-6M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132681510,&quot;title&quot;:&quot;6-9M&quot;,&quot;option1&quot;:&quot;6-9M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191231&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 6-9M&quot;,&quot;public_title&quot;:&quot;6-9M&quot;,&quot;options&quot;:[&quot;6-9M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132714278,&quot;title&quot;:&quot;9-12M&quot;,&quot;option1&quot;:&quot;9-12M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191248&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 9-12M&quot;,&quot;public_title&quot;:&quot;9-12M&quot;,&quot;options&quot;:[&quot;9-12M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132747046,&quot;title&quot;:&quot;12-18M&quot;,&quot;option1&quot;:&quot;12-18M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191255&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 12-18M&quot;,&quot;public_title&quot;:&quot;12-18M&quot;,&quot;options&quot;:[&quot;12-18M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132779814,&quot;title&quot;:&quot;18-24M&quot;,&quot;option1&quot;:&quot;18-24M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191262&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 18-24M&quot;,&quot;public_title&quot;:&quot;18-24M&quot;,&quot;options&quot;:[&quot;18-24M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}}],&quot;images&quot;:[&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-2_69fe5b9d-475f-4277-a0ba-c54e8e8cbd8f.jpg?v=1723725552&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-3_d30ebbfd-de94-4c6a-94d5-e2e8f0d9f56b.jpg?v=1723725552&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-4_74768f37-8b78-44f9-aa0f-57d68fb420fc.jpg?v=1723725552&quot;,&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-5_ebf66abb-dc02-47af-8206-cd9037e92135.jpg?v=1724944514&quot;],&quot;featured_image&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552&quot;,&quot;options&quot;:[&quot;Talla&quot;],&quot;media&quot;:[{&quot;alt&quot;:null,&quot;id&quot;:40459456250150,&quot;position&quot;:1,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-1_a5f84e6b-50d2-4fe2-bf97-01fb6688c9ce.jpg?v=1723725552&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40459456282918,&quot;position&quot;:2,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-2_69fe5b9d-475f-4277-a0ba-c54e8e8cbd8f.jpg?v=1723725552&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-2_69fe5b9d-475f-4277-a0ba-c54e8e8cbd8f.jpg?v=1723725552&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40459456315686,&quot;position&quot;:3,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-3_d30ebbfd-de94-4c6a-94d5-e2e8f0d9f56b.jpg?v=1723725552&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-3_d30ebbfd-de94-4c6a-94d5-e2e8f0d9f56b.jpg?v=1723725552&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40459456348454,&quot;position&quot;:4,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-4_74768f37-8b78-44f9-aa0f-57d68fb420fc.jpg?v=1723725552&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-4_74768f37-8b78-44f9-aa0f-57d68fb420fc.jpg?v=1723725552&quot;,&quot;width&quot;:1000},{&quot;alt&quot;:null,&quot;id&quot;:40599021584678,&quot;position&quot;:5,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;width&quot;:1000,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-5_ebf66abb-dc02-47af-8206-cd9037e92135.jpg?v=1724944514&quot;},&quot;aspect_ratio&quot;:0.792,&quot;height&quot;:1263,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\\/\\/www.babyfresh.co\\/cdn\\/shop\\/files\\/fexar-beige-estampado-46593-745049_046593-5_ebf66abb-dc02-47af-8206-cd9037e92135.jpg?v=1724944514&quot;,&quot;width&quot;:1000}],&quot;requires_selling_plan&quot;:false,&quot;selling_plan_groups&quot;:[],&quot;content&quot;:&quot;\\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&quot;}"
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&amp;width=270"
157
+ data-price="8999000" data-ratio="1" data-new=""
158
+ data-variants="[[{&quot;id&quot;:49285132615974,&quot;title&quot;:&quot;0-3M&quot;,&quot;option1&quot;:&quot;0-3M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191217&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 0-3M&quot;,&quot;public_title&quot;:&quot;0-3M&quot;,&quot;options&quot;:[&quot;0-3M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132648742,&quot;title&quot;:&quot;3-6M&quot;,&quot;option1&quot;:&quot;3-6M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191224&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 3-6M&quot;,&quot;public_title&quot;:&quot;3-6M&quot;,&quot;options&quot;:[&quot;3-6M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132681510,&quot;title&quot;:&quot;6-9M&quot;,&quot;option1&quot;:&quot;6-9M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191231&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 6-9M&quot;,&quot;public_title&quot;:&quot;6-9M&quot;,&quot;options&quot;:[&quot;6-9M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132714278,&quot;title&quot;:&quot;9-12M&quot;,&quot;option1&quot;:&quot;9-12M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191248&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 9-12M&quot;,&quot;public_title&quot;:&quot;9-12M&quot;,&quot;options&quot;:[&quot;9-12M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132747046,&quot;title&quot;:&quot;12-18M&quot;,&quot;option1&quot;:&quot;12-18M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191255&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 12-18M&quot;,&quot;public_title&quot;:&quot;12-18M&quot;,&quot;options&quot;:[&quot;12-18M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:49285132779814,&quot;title&quot;:&quot;18-24M&quot;,&quot;option1&quot;:&quot;18-24M&quot;,&quot;option2&quot;:null,&quot;option3&quot;:null,&quot;sku&quot;:&quot;7703259191262&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;Vestido con body y manga corta beige estampado - 18-24M&quot;,&quot;public_title&quot;:&quot;18-24M&quot;,&quot;options&quot;:[&quot;18-24M&quot;],&quot;price&quot;:8999000,&quot;weight&quot;:0,&quot;compare_at_price&quot;:8999000,&quot;inventory_management&quot;:&quot;shopify&quot;,&quot;barcode&quot;:&quot;745049-046593&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;: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&amp;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
+ });