test-utils.js — astro Source File
Architecture documentation for test-utils.js, a javascript file in the astro codebase. 6 imports, 3 dependents.
Entity Profile
Dependency Diagram
graph LR 6edce826_f6ba_1758_b163_54ce397ea33f["test-utils.js"] 0a624eac_945e_c9e8_c9de_3feb9de2dd15["test-utils.js"] 6edce826_f6ba_1758_b163_54ce397ea33f --> 0a624eac_945e_c9e8_c9de_3feb9de2dd15 dd4f09ce_3fd7_8295_f616_8876cda4555c["loadFixture"] 6edce826_f6ba_1758_b163_54ce397ea33f --> dd4f09ce_3fd7_8295_f616_8876cda4555c 5d6d1861_a18d_b246_cd94_08889ab7e74c["promises"] 6edce826_f6ba_1758_b163_54ce397ea33f --> 5d6d1861_a18d_b246_cd94_08889ab7e74c c52a5f83_66e3_37d7_9ebb_767f7129bc62["node:path"] 6edce826_f6ba_1758_b163_54ce397ea33f --> c52a5f83_66e3_37d7_9ebb_767f7129bc62 d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"] 6edce826_f6ba_1758_b163_54ce397ea33f --> d9a92db9_c95e_9165_13ac_24b3d859d946 f8fbe851_c5d6_c4ee_c044_67a751668c18["test"] 6edce826_f6ba_1758_b163_54ce397ea33f --> f8fbe851_c5d6_c4ee_c044_67a751668c18 fa074a96_ee02_dea9_a044_6d4ae49e2ecc["basics.test.js"] fa074a96_ee02_dea9_a044_6d4ae49e2ecc --> 6edce826_f6ba_1758_b163_54ce397ea33f ca28d245_ce97_df3b_e1b4_17d975c7f6fd["directive.test.js"] ca28d245_ce97_df3b_e1b4_17d975c7f6fd --> 6edce826_f6ba_1758_b163_54ce397ea33f 930ff9c5_1888_2273_3c5d_257cd2b9a4f2["plugin-script-import.test.js"] 930ff9c5_1888_2273_3c5d_257cd2b9a4f2 --> 6edce826_f6ba_1758_b163_54ce397ea33f style 6edce826_f6ba_1758_b163_54ce397ea33f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import fs from 'node:fs/promises';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { test as testBase } from '@playwright/test';
import { loadFixture as baseLoadFixture } from '../../../astro/test/test-utils.js';
// Get all test files in directory, assign unique port for each of them so they don't conflict
const testFiles = await fs.readdir(new URL('.', import.meta.url));
const testFileToPort = new Map();
for (let i = 0; i < testFiles.length; i++) {
const file = testFiles[i];
if (file.endsWith('.test.js')) {
testFileToPort.set(file.slice(0, -8), 4000 + i);
}
}
function loadFixture(inlineConfig) {
if (!inlineConfig?.root) throw new Error("Must provide { root: './fixtures/...' }");
// resolve the relative root (i.e. "./fixtures/tailwindcss") to a full filepath
// without this, the main `loadFixture` helper will resolve relative to `packages/astro/test`
return baseLoadFixture({
...inlineConfig,
root: fileURLToPath(new URL(inlineConfig.root, import.meta.url)),
server: {
port: testFileToPort.get(path.basename(inlineConfig.root)),
},
});
}
function testFactory(inlineConfig) {
let fixture;
const test = testBase.extend({
astro: async ({}, use) => {
fixture = fixture || (await loadFixture(inlineConfig));
await use(fixture);
},
});
test.afterEach(() => {
fixture.resetAllFiles();
});
return test;
}
export function prepareTestFactory(opts) {
const test = testFactory(opts);
let devServer;
test.beforeAll(async ({ astro }) => {
devServer = await astro.startDevServer();
});
test.afterAll(async () => {
await devServer.stop();
});
return {
test,
};
}
Domain
Subdomains
Dependencies
- loadFixture
- node:path
- node:url
- promises
- test
- test-utils.js
Imported By
Source
Frequently Asked Questions
What does test-utils.js do?
test-utils.js is a source file in the astro codebase, written in javascript. It belongs to the CoreAstro domain, RoutingSystem subdomain.
What functions are defined in test-utils.js?
test-utils.js defines 3 function(s): loadFixture, prepareTestFactory, testFactory.
What does test-utils.js depend on?
test-utils.js imports 6 module(s): loadFixture, node:path, node:url, promises, test, test-utils.js.
What files import test-utils.js?
test-utils.js is imported by 3 file(s): basics.test.js, directive.test.js, plugin-script-import.test.js.
Where is test-utils.js in the architecture?
test-utils.js is located at packages/integrations/alpinejs/test/test-utils.js (domain: CoreAstro, subdomain: RoutingSystem, directory: packages/integrations/alpinejs/test).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free