PronounsPage/server/dotenv.ts
Adaline Simonian 23a3862ca0
test: introduce snapshot-based smoke tests
- Adds a new test suite with Docker-based smoke tests for all locales.
  Can be run using the ./smoketest.sh script.
- Replaces all calls to Math.random() with a new helper that returns 0.5
  in snapshot testing mode, ensuring deterministic snapshots.
- Similarly replaces all calls to new Date() and Date.now() with new
  helpers that return a fixed date in snapshot testing mode.
- Replaces checks against NODE_ENV with APP_ENV, to ensure that the
  bundles can be built with Nuxt for testing without losing code that
  would otherwise be stripped out by production optimizations.
- Adds a database init script that can be used to initialize the
  database with a single admin user and a long-lived JWT token for use
  in automation tests.
- Adds a JWT decoding/encoding CLI tool for debugging JWTs.

Note: Snapshots are not checked in, and must be generated manually. See
test/__snapshots__/.gitignore for more information.
2025-02-02 23:11:19 -08:00

41 lines
1.3 KiB
TypeScript

import dotenv from 'dotenv';
import type { Config } from '../locale/config.ts';
import buildLocaleList from '../src/buildLocaleList.ts';
import { buildList } from '../src/helpers.ts';
import { env } from './env.ts';
import { loadSuml } from './loader.ts';
import { rootDir } from './paths.ts';
export default () => {
dotenv.config({ path: `${rootDir}/.env` });
if (process.env.__INCLUDE) {
dotenv.config({ path: `${rootDir}/${process.env.__INCLUDE}` });
}
process.env.CLOUDFRONT = `https://${process.env.AWS_CLOUDFRONT_ID}.cloudfront.net`;
const config = loadSuml('config') as Config;
const locales = buildLocaleList(config.locale);
const allLocalesUrls = buildList(function*() {
if (env === 'development') {
if (process.env.BASE_URL) {
yield process.env.BASE_URL;
}
yield 'http://pronouns.test:3000';
yield 'http://localhost:3000';
} else if (process.env.ENV === 'test') {
if (process.env.BASE_URL) {
yield process.env.BASE_URL;
}
} else {
yield 'https://pronouns.page';
for (const localeDescription of Object.values(locales)) {
yield localeDescription.url;
}
}
});
process.env.ALL_LOCALES_URLS = allLocalesUrls.join(',');
};