UNPKG

rwsdk

Version:

Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime

52 lines (51 loc) • 2.48 kB
import { setTimeout } from "node:timers/promises"; import { $expect, deleteD1Database, deleteWorker, isRelatedToTest, listD1Databases, runRelease as runE2ERelease, } from "../../lib/e2e/release.mjs"; import { checkServerUp, checkUrl } from "./browser.mjs"; import { log } from "./constants.mjs"; export { $expect, deleteD1Database, deleteWorker, isRelatedToTest, listD1Databases, }; /** * Run the release command to deploy to Cloudflare */ export async function runRelease(cwd, projectDir, resourceUniqueKey) { return runE2ERelease(cwd, projectDir, resourceUniqueKey); } /** * Runs tests against the production deployment */ export async function runReleaseTest(artifactDir, resources, browserPath, headless = true, bail = false, skipClient = false, projectDir, realtime = false, skipHmr = false, skipStyleTests = false) { log("Starting release test"); console.log("\nšŸš€ Testing production deployment"); try { log("Running release process"); const { url, workerName } = await runRelease(resources.targetDir || "", projectDir || "", resources.resourceUniqueKey); // Wait a moment before checking server availability log("Waiting 1s before checking server..."); await setTimeout(1000); // DRY: check both root and custom path await checkServerUp(url, "/"); // Now run the tests with the custom path const testUrl = new URL("/__smoke_test", url).toString(); await checkUrl(testUrl, artifactDir, browserPath, headless, bail, skipClient, "Production", realtime, resources.targetDir, // Add target directory parameter true, // Always skip HMR in production skipStyleTests); log("Release test completed successfully"); // Store the worker name if we didn't set it earlier if (resources && !resources.workerName) { log("Storing worker name: %s", workerName); resources.workerName = workerName; } // Mark that we created this worker during the test if (resources) { log("Marking worker %s as created during this test", workerName); resources.workerCreatedDuringTest = true; // Update the global state if (resources.workerCreatedDuringTest !== undefined) { resources.workerCreatedDuringTest = true; } } } catch (error) { log("Error during release testing: %O", error); throw error; } }