Home / File/ test-utils.js — astro Source File

test-utils.js — astro Source File

Architecture documentation for test-utils.js, a javascript file in the astro codebase. 6 imports, 3 dependents.

File javascript CoreAstro RoutingSystem 6 imports 3 dependents 3 functions

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

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