@chrryai/waffles 1.6.2 → 1.6.3

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/dist/index.js CHANGED
@@ -26,7 +26,7 @@ var dotenv__namespace = /*#__PURE__*/_interopNamespace(dotenv);
26
26
  var TEST_GUEST_FINGERPRINTS = process.env.TEST_GUEST_FINGERPRINTS?.split(",") || [];
27
27
  var TEST_MEMBER_FINGERPRINTS = process.env.TEST_MEMBER_FINGERPRINTS?.split(",") || [];
28
28
  var TEST_MEMBER_EMAILS = process.env.TEST_MEMBER_EMAILS?.split(",") || [];
29
- var VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL_1;
29
+ var VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL;
30
30
  var VEX_TEST_PASSWORD = process.env.VEX_TEST_PASSWORD;
31
31
  var VEX_TEST_FINGERPRINT = TEST_MEMBER_FINGERPRINTS[0];
32
32
  var VEX_TEST_EMAIL_2 = process.env.VEX_TEST_EMAIL_2;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["dotenv"],"mappings":"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","file":"index.js","sourcesContent":["import * as dotenv from \"dotenv\"\nimport { Page } from \"@playwright/test\"\n\nexport type modelName = \"chatGPT\" | \"claude\" | \"gemini\" | \"sushi\"\n\nexport const TEST_GUEST_FINGERPRINTS =\n process.env.TEST_GUEST_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_FINGERPRINTS =\n process.env.TEST_MEMBER_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_EMAILS =\n process.env.TEST_MEMBER_EMAILS?.split(\",\") || []\n\nexport const VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL_1!\nexport const VEX_TEST_PASSWORD = process.env.VEX_TEST_PASSWORD!\nexport const VEX_TEST_FINGERPRINT = TEST_MEMBER_FINGERPRINTS[0]\nexport const VEX_TEST_EMAIL_2 = process.env.VEX_TEST_EMAIL_2!\nexport const VEX_TEST_PASSWORD_2 = process.env.VEX_TEST_PASSWORD_2!\nexport const VEX_TEST_FINGERPRINT_2 = TEST_MEMBER_FINGERPRINTS[1]\nexport const VEX_TEST_EMAIL_3 = process.env.VEX_TEST_EMAIL_3!\nexport const VEX_TEST_PASSWORD_3 = process.env.VEX_TEST_PASSWORD_3!\nexport const VEX_TEST_FINGERPRINT_3 = TEST_MEMBER_FINGERPRINTS[2]\n\ndotenv.config()\n\nexport const TEST_URL = process.env.TEST_URL!\nexport const LIVE_URL = \"https://chrry.ai\"\n\nconst wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\nexport const isCI = process.env.NEXT_PUBLIC_CI || process.env.CI\n\nconst getURL = (\n {\n isLive = false,\n isMember = false,\n path = \"\",\n fingerprint = \"\",\n }: {\n isLive: boolean\n isMember?: boolean\n path?: string\n fingerprint?: string\n } = {\n isLive: false,\n isMember: false,\n path: \"\",\n fingerprint: \"\",\n },\n) => {\n const base = isLive ? LIVE_URL : TEST_URL\n return isMember\n ? `${base}${path}?fp=${fingerprint || TEST_MEMBER_FINGERPRINTS[0]}`\n : `${base}${path}?fp=${fingerprint || TEST_GUEST_FINGERPRINTS[0]}`\n}\n\nconst simulateInputPaste = async (page: Page, text: string) => {\n await page.evaluate((content) => {\n const textarea = document.querySelector(\n 'textarea[data-testid=\"chat-textarea\"]',\n ) as HTMLTextAreaElement\n if (!textarea) return\n\n // Create a basic event\n const pasteEvent = new Event(\"paste\", {\n bubbles: true,\n cancelable: true,\n })\n\n // Add clipboardData getter\n Object.defineProperty(pasteEvent, \"clipboardData\", {\n value: {\n getData: () => content,\n types: [\"text/plain\"],\n files: [],\n items: [\n {\n kind: \"string\",\n type: \"text/plain\",\n getAsString: (callback: (text: string) => void) =>\n callback(content),\n },\n ],\n },\n writable: false,\n })\n\n // Dispatch the event\n textarea.dispatchEvent(pasteEvent)\n\n // Set the value directly after the paste event\n textarea.value = content\n\n // Trigger input event to simulate actual typing\n const inputEvent = new Event(\"input\", { bubbles: true })\n textarea.dispatchEvent(inputEvent)\n }, text)\n}\nconst simulatePaste = async (page: Page, text: string) => {\n // Use Playwright's built-in clipboard API\n await page.evaluate(async (content) => {\n // Write to clipboard\n await navigator.clipboard.writeText(content)\n\n // Find the paste button and click it\n const pasteButton = document.querySelector(\n '[data-testid*=\"artifacts-paste-button\"]',\n ) as HTMLButtonElement\n if (pasteButton) {\n pasteButton.click()\n }\n }, text)\n}\n\nfunction capitalizeFirstLetter(val: string) {\n return String(val).charAt(0).toUpperCase() + String(val).slice(1)\n}\n\nexport {\n wait,\n getURL,\n simulateInputPaste,\n simulatePaste,\n capitalizeFirstLetter,\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["dotenv"],"mappings":"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","file":"index.js","sourcesContent":["import * as dotenv from \"dotenv\"\nimport { Page } from \"@playwright/test\"\n\nexport type modelName = \"chatGPT\" | \"claude\" | \"gemini\" | \"sushi\"\n\nexport const TEST_GUEST_FINGERPRINTS =\n process.env.TEST_GUEST_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_FINGERPRINTS =\n process.env.TEST_MEMBER_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_EMAILS =\n process.env.TEST_MEMBER_EMAILS?.split(\",\") || []\n\nexport const VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL!\nexport const VEX_TEST_PASSWORD = process.env.VEX_TEST_PASSWORD!\nexport const VEX_TEST_FINGERPRINT = TEST_MEMBER_FINGERPRINTS[0]\nexport const VEX_TEST_EMAIL_2 = process.env.VEX_TEST_EMAIL_2!\nexport const VEX_TEST_PASSWORD_2 = process.env.VEX_TEST_PASSWORD_2!\nexport const VEX_TEST_FINGERPRINT_2 = TEST_MEMBER_FINGERPRINTS[1]\nexport const VEX_TEST_EMAIL_3 = process.env.VEX_TEST_EMAIL_3!\nexport const VEX_TEST_PASSWORD_3 = process.env.VEX_TEST_PASSWORD_3!\nexport const VEX_TEST_FINGERPRINT_3 = TEST_MEMBER_FINGERPRINTS[2]\n\ndotenv.config()\n\nexport const TEST_URL = process.env.TEST_URL!\nexport const LIVE_URL = \"https://chrry.ai\"\n\nconst wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\nexport const isCI = process.env.NEXT_PUBLIC_CI || process.env.CI\n\nconst getURL = (\n {\n isLive = false,\n isMember = false,\n path = \"\",\n fingerprint = \"\",\n }: {\n isLive: boolean\n isMember?: boolean\n path?: string\n fingerprint?: string\n } = {\n isLive: false,\n isMember: false,\n path: \"\",\n fingerprint: \"\",\n },\n) => {\n const base = isLive ? LIVE_URL : TEST_URL\n return isMember\n ? `${base}${path}?fp=${fingerprint || TEST_MEMBER_FINGERPRINTS[0]}`\n : `${base}${path}?fp=${fingerprint || TEST_GUEST_FINGERPRINTS[0]}`\n}\n\nconst simulateInputPaste = async (page: Page, text: string) => {\n await page.evaluate((content) => {\n const textarea = document.querySelector(\n 'textarea[data-testid=\"chat-textarea\"]',\n ) as HTMLTextAreaElement\n if (!textarea) return\n\n // Create a basic event\n const pasteEvent = new Event(\"paste\", {\n bubbles: true,\n cancelable: true,\n })\n\n // Add clipboardData getter\n Object.defineProperty(pasteEvent, \"clipboardData\", {\n value: {\n getData: () => content,\n types: [\"text/plain\"],\n files: [],\n items: [\n {\n kind: \"string\",\n type: \"text/plain\",\n getAsString: (callback: (text: string) => void) =>\n callback(content),\n },\n ],\n },\n writable: false,\n })\n\n // Dispatch the event\n textarea.dispatchEvent(pasteEvent)\n\n // Set the value directly after the paste event\n textarea.value = content\n\n // Trigger input event to simulate actual typing\n const inputEvent = new Event(\"input\", { bubbles: true })\n textarea.dispatchEvent(inputEvent)\n }, text)\n}\nconst simulatePaste = async (page: Page, text: string) => {\n // Use Playwright's built-in clipboard API\n await page.evaluate(async (content) => {\n // Write to clipboard\n await navigator.clipboard.writeText(content)\n\n // Find the paste button and click it\n const pasteButton = document.querySelector(\n '[data-testid*=\"artifacts-paste-button\"]',\n ) as HTMLButtonElement\n if (pasteButton) {\n pasteButton.click()\n }\n }, text)\n}\n\nfunction capitalizeFirstLetter(val: string) {\n return String(val).charAt(0).toUpperCase() + String(val).slice(1)\n}\n\nexport {\n wait,\n getURL,\n simulateInputPaste,\n simulatePaste,\n capitalizeFirstLetter,\n}\n"]}
package/dist/index.mjs CHANGED
@@ -4,7 +4,7 @@ import * as dotenv from 'dotenv';
4
4
  var TEST_GUEST_FINGERPRINTS = process.env.TEST_GUEST_FINGERPRINTS?.split(",") || [];
5
5
  var TEST_MEMBER_FINGERPRINTS = process.env.TEST_MEMBER_FINGERPRINTS?.split(",") || [];
6
6
  var TEST_MEMBER_EMAILS = process.env.TEST_MEMBER_EMAILS?.split(",") || [];
7
- var VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL_1;
7
+ var VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL;
8
8
  var VEX_TEST_PASSWORD = process.env.VEX_TEST_PASSWORD;
9
9
  var VEX_TEST_FINGERPRINT = TEST_MEMBER_FINGERPRINTS[0];
10
10
  var VEX_TEST_EMAIL_2 = process.env.VEX_TEST_EMAIL_2;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import * as dotenv from \"dotenv\"\nimport { Page } from \"@playwright/test\"\n\nexport type modelName = \"chatGPT\" | \"claude\" | \"gemini\" | \"sushi\"\n\nexport const TEST_GUEST_FINGERPRINTS =\n process.env.TEST_GUEST_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_FINGERPRINTS =\n process.env.TEST_MEMBER_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_EMAILS =\n process.env.TEST_MEMBER_EMAILS?.split(\",\") || []\n\nexport const VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL_1!\nexport const VEX_TEST_PASSWORD = process.env.VEX_TEST_PASSWORD!\nexport const VEX_TEST_FINGERPRINT = TEST_MEMBER_FINGERPRINTS[0]\nexport const VEX_TEST_EMAIL_2 = process.env.VEX_TEST_EMAIL_2!\nexport const VEX_TEST_PASSWORD_2 = process.env.VEX_TEST_PASSWORD_2!\nexport const VEX_TEST_FINGERPRINT_2 = TEST_MEMBER_FINGERPRINTS[1]\nexport const VEX_TEST_EMAIL_3 = process.env.VEX_TEST_EMAIL_3!\nexport const VEX_TEST_PASSWORD_3 = process.env.VEX_TEST_PASSWORD_3!\nexport const VEX_TEST_FINGERPRINT_3 = TEST_MEMBER_FINGERPRINTS[2]\n\ndotenv.config()\n\nexport const TEST_URL = process.env.TEST_URL!\nexport const LIVE_URL = \"https://chrry.ai\"\n\nconst wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\nexport const isCI = process.env.NEXT_PUBLIC_CI || process.env.CI\n\nconst getURL = (\n {\n isLive = false,\n isMember = false,\n path = \"\",\n fingerprint = \"\",\n }: {\n isLive: boolean\n isMember?: boolean\n path?: string\n fingerprint?: string\n } = {\n isLive: false,\n isMember: false,\n path: \"\",\n fingerprint: \"\",\n },\n) => {\n const base = isLive ? LIVE_URL : TEST_URL\n return isMember\n ? `${base}${path}?fp=${fingerprint || TEST_MEMBER_FINGERPRINTS[0]}`\n : `${base}${path}?fp=${fingerprint || TEST_GUEST_FINGERPRINTS[0]}`\n}\n\nconst simulateInputPaste = async (page: Page, text: string) => {\n await page.evaluate((content) => {\n const textarea = document.querySelector(\n 'textarea[data-testid=\"chat-textarea\"]',\n ) as HTMLTextAreaElement\n if (!textarea) return\n\n // Create a basic event\n const pasteEvent = new Event(\"paste\", {\n bubbles: true,\n cancelable: true,\n })\n\n // Add clipboardData getter\n Object.defineProperty(pasteEvent, \"clipboardData\", {\n value: {\n getData: () => content,\n types: [\"text/plain\"],\n files: [],\n items: [\n {\n kind: \"string\",\n type: \"text/plain\",\n getAsString: (callback: (text: string) => void) =>\n callback(content),\n },\n ],\n },\n writable: false,\n })\n\n // Dispatch the event\n textarea.dispatchEvent(pasteEvent)\n\n // Set the value directly after the paste event\n textarea.value = content\n\n // Trigger input event to simulate actual typing\n const inputEvent = new Event(\"input\", { bubbles: true })\n textarea.dispatchEvent(inputEvent)\n }, text)\n}\nconst simulatePaste = async (page: Page, text: string) => {\n // Use Playwright's built-in clipboard API\n await page.evaluate(async (content) => {\n // Write to clipboard\n await navigator.clipboard.writeText(content)\n\n // Find the paste button and click it\n const pasteButton = document.querySelector(\n '[data-testid*=\"artifacts-paste-button\"]',\n ) as HTMLButtonElement\n if (pasteButton) {\n pasteButton.click()\n }\n }, text)\n}\n\nfunction capitalizeFirstLetter(val: string) {\n return String(val).charAt(0).toUpperCase() + String(val).slice(1)\n}\n\nexport {\n wait,\n getURL,\n simulateInputPaste,\n simulatePaste,\n capitalizeFirstLetter,\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import * as dotenv from \"dotenv\"\nimport { Page } from \"@playwright/test\"\n\nexport type modelName = \"chatGPT\" | \"claude\" | \"gemini\" | \"sushi\"\n\nexport const TEST_GUEST_FINGERPRINTS =\n process.env.TEST_GUEST_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_FINGERPRINTS =\n process.env.TEST_MEMBER_FINGERPRINTS?.split(\",\") || []\nexport const TEST_MEMBER_EMAILS =\n process.env.TEST_MEMBER_EMAILS?.split(\",\") || []\n\nexport const VEX_TEST_EMAIL = process.env.VEX_TEST_EMAIL!\nexport const VEX_TEST_PASSWORD = process.env.VEX_TEST_PASSWORD!\nexport const VEX_TEST_FINGERPRINT = TEST_MEMBER_FINGERPRINTS[0]\nexport const VEX_TEST_EMAIL_2 = process.env.VEX_TEST_EMAIL_2!\nexport const VEX_TEST_PASSWORD_2 = process.env.VEX_TEST_PASSWORD_2!\nexport const VEX_TEST_FINGERPRINT_2 = TEST_MEMBER_FINGERPRINTS[1]\nexport const VEX_TEST_EMAIL_3 = process.env.VEX_TEST_EMAIL_3!\nexport const VEX_TEST_PASSWORD_3 = process.env.VEX_TEST_PASSWORD_3!\nexport const VEX_TEST_FINGERPRINT_3 = TEST_MEMBER_FINGERPRINTS[2]\n\ndotenv.config()\n\nexport const TEST_URL = process.env.TEST_URL!\nexport const LIVE_URL = \"https://chrry.ai\"\n\nconst wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\nexport const isCI = process.env.NEXT_PUBLIC_CI || process.env.CI\n\nconst getURL = (\n {\n isLive = false,\n isMember = false,\n path = \"\",\n fingerprint = \"\",\n }: {\n isLive: boolean\n isMember?: boolean\n path?: string\n fingerprint?: string\n } = {\n isLive: false,\n isMember: false,\n path: \"\",\n fingerprint: \"\",\n },\n) => {\n const base = isLive ? LIVE_URL : TEST_URL\n return isMember\n ? `${base}${path}?fp=${fingerprint || TEST_MEMBER_FINGERPRINTS[0]}`\n : `${base}${path}?fp=${fingerprint || TEST_GUEST_FINGERPRINTS[0]}`\n}\n\nconst simulateInputPaste = async (page: Page, text: string) => {\n await page.evaluate((content) => {\n const textarea = document.querySelector(\n 'textarea[data-testid=\"chat-textarea\"]',\n ) as HTMLTextAreaElement\n if (!textarea) return\n\n // Create a basic event\n const pasteEvent = new Event(\"paste\", {\n bubbles: true,\n cancelable: true,\n })\n\n // Add clipboardData getter\n Object.defineProperty(pasteEvent, \"clipboardData\", {\n value: {\n getData: () => content,\n types: [\"text/plain\"],\n files: [],\n items: [\n {\n kind: \"string\",\n type: \"text/plain\",\n getAsString: (callback: (text: string) => void) =>\n callback(content),\n },\n ],\n },\n writable: false,\n })\n\n // Dispatch the event\n textarea.dispatchEvent(pasteEvent)\n\n // Set the value directly after the paste event\n textarea.value = content\n\n // Trigger input event to simulate actual typing\n const inputEvent = new Event(\"input\", { bubbles: true })\n textarea.dispatchEvent(inputEvent)\n }, text)\n}\nconst simulatePaste = async (page: Page, text: string) => {\n // Use Playwright's built-in clipboard API\n await page.evaluate(async (content) => {\n // Write to clipboard\n await navigator.clipboard.writeText(content)\n\n // Find the paste button and click it\n const pasteButton = document.querySelector(\n '[data-testid*=\"artifacts-paste-button\"]',\n ) as HTMLButtonElement\n if (pasteButton) {\n pasteButton.click()\n }\n }, text)\n}\n\nfunction capitalizeFirstLetter(val: string) {\n return String(val).charAt(0).toUpperCase() + String(val).slice(1)\n}\n\nexport {\n wait,\n getURL,\n simulateInputPaste,\n simulatePaste,\n capitalizeFirstLetter,\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrryai/waffles",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "Production-ready Playwright testing utilities and helpers for modern web apps",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",