Files
nym/wasm/smolmix/tests/playwright.config.mjs
mfahampshire 43a1bd38e8 Max/smolmix wasm (#6784)
* Mod gitignore + license trimming + comment trimming

* Big rewrite

* SURB inputs + DNS button in internal-dev

* Make ipr addr optional

* Accidentatly omitted files from rewrite commit

* Makefile + readme

* Comment rewrite

* Optimisation comment

* Replace manual waker map with
      smoltcp built-ins + adaptive poll

* Comments

* Extract socket creation helpers into stream.rs

* Cleanup comments

* Comment

* Comment notes and restrict ciphersuites wrt rustls-rustcrypto

* Dep. hack fix for demo + add clearnet fetch() for contrast

* Stripped down devtester

* Fix Clippy arg (fatfingered deletion)

* CodeRabbit catches

* Cargofmt

* Review nits: bridge logs, fetch early-return, static port counter, copyright years, README + Cargo + headless.js tidying

* PHONY + taskset override, switch internal-dev/tests to pnpm, fix wasm-pack out-dir

* Gate codec tests behind the codec feature for no-default-features builds

* IPv6 addr/route on smoltcp iface + configurable DNS resolvers via TunnelOpts

* DNS GUI inputs, close stale WS on reconnect, worker init guards + ws-send warning, Playwright listener cleanup, pnpm-lock in internal-dev

* Fix lp -> lp-data after rebase

* Revert nym-lp/nym-lp-data feature-gating left over from rebase

* Lift getrandom wasm_js cfg to workspace .cargo/config.toml so cargo check -p smolmix-wasm works from any CWD

* temp will amend git message

* Auto-discover IPR when none specified + 'Use random IPR' checkbox in internal-dev

* smolmix_tracker + State machine + ready_tunnel gate + getTunnelState JS surface

* Mirror red display() entries to console.error

* Add left out package-lock

* Reactor clock + yield_now + atomic seq + gateway-storage errors

* setupMixTunnel gate + MTU 1980 + http::Uri cleanup

* Review pass + fix test + clippy

* restore axum 0.8 bump from borked earlier merge

* Feature gating (dns/fetch/socket) + TunnelOptsBuilder + pnpm bypass

* Cont. with review comments

* tokio Nofity reactor wakes + cancellation + setup polishing

* Notify wakes + inner pattern + close_notify + util

* Tunable tunnelopts

* Fix tired commit

* CI prep

* Lint + Clippy

* coderabbit u32 fix

* nits + runtime debugging + expose in internal-dev

* remove redudant default-features

* Remove more redundant default-features
2026-05-28 15:57:10 +00:00

89 lines
2.7 KiB
JavaScript

import { defineConfig } from "@playwright/test";
// Headless Firefox on non-Ubuntu hosts (Arch/Manjaro fallback build) needs
// these prefs to behave like headed Firefox: keep IndexedDB persistent across
// the test session, raise the wss:// open timeout above the 20 s default
// (mixnet handshake + WSS upgrade can take longer on a cold load), and skip
// the captive-portal probe that adds spurious DNS noise.
const firefoxUserPrefs = {
"dom.indexedDB.enabled": true,
"dom.storage.next_gen": true,
"browser.privatebrowsing.autostart": false,
"network.websocket.timeout.open": 60,
"network.captive-portal-service.enabled": false,
"network.connectivity-service.enabled": false,
// Force the OS resolver rather than Mozilla's DoH. Headless Firefox on
// non-Ubuntu hosts sometimes can't reach mozilla.cloudflare-dns.com from
// the bundled NSS context, which stalls gateway hostname resolution.
"network.trr.mode": 0,
"network.dns.disablePrefetch": true,
// Headless Firefox has no visible window so it treats itself as backgrounded
// and clamps timers (default 1 s minimum via dom.min_background_timeout_value).
// Our reactor ticks every 5 ms and the Nym base client uses many short
// timers in its WS keepalive/retry logic; clamping those to 1 s stalls the
// gateway handshake. Disable every timer-throttling knob.
"dom.min_background_timeout_value": 4,
"dom.workers.timeoutThrottling": false,
"dom.timeout.foreground_budget_regeneration_rate": -1,
"dom.timeout.background_budget_regeneration_rate": -1,
};
const firefoxUse = {
browserName: "firefox",
launchOptions: { firefoxUserPrefs },
};
export default defineConfig({
testDir: "./tests",
timeout: 180_000,
retries: 1,
use: {
trace: "on-first-retry",
},
webServer: {
command: "npx serve ../internal-dev/dist -l 9001 --no-clipboard",
port: 9001,
reuseExistingServer: true,
},
projects: [
// Smoke: all three browsers
{
name: "smoke-chromium",
testMatch: "smoke.spec.mjs",
use: { browserName: "chromium" },
},
{
name: "smoke-firefox",
testMatch: "smoke.spec.mjs",
use: firefoxUse,
},
{
name: "smoke-webkit",
testMatch: "smoke.spec.mjs",
use: { browserName: "webkit" },
},
// Suite: all three browsers
{
name: "suite-chromium",
testMatch: "suite.spec.mjs",
timeout: 600_000,
retries: 0,
use: { browserName: "chromium" },
},
{
name: "suite-firefox",
testMatch: "suite.spec.mjs",
timeout: 600_000,
retries: 0,
use: firefoxUse,
},
{
name: "suite-webkit",
testMatch: "suite.spec.mjs",
timeout: 600_000,
retries: 0,
use: { browserName: "webkit" },
},
],
});