diff --git a/yarn-project/accounts/package.json b/yarn-project/accounts/package.json index efa1f66e06c..7fd731ae281 100644 --- a/yarn-project/accounts/package.json +++ b/yarn-project/accounts/package.json @@ -72,7 +72,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/aztec.js": "workspace:^", diff --git a/yarn-project/archiver/package.json b/yarn-project/archiver/package.json index c92d80bfe57..61b84434170 100644 --- a/yarn-project/archiver/package.json +++ b/yarn-project/archiver/package.json @@ -62,7 +62,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/aztec-faucet/package.json b/yarn-project/aztec-faucet/package.json index 9315089fa18..3852ff8828e 100644 --- a/yarn-project/aztec-faucet/package.json +++ b/yarn-project/aztec-faucet/package.json @@ -56,7 +56,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/ethereum": "workspace:^", diff --git a/yarn-project/aztec-node/package.json b/yarn-project/aztec-node/package.json index ab293ce4ada..f23417a5b7b 100644 --- a/yarn-project/aztec-node/package.json +++ b/yarn-project/aztec-node/package.json @@ -58,7 +58,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/archiver": "workspace:^", diff --git a/yarn-project/aztec.js/package.json b/yarn-project/aztec.js/package.json index 0c7447bd644..f426c02a05d 100644 --- a/yarn-project/aztec.js/package.json +++ b/yarn-project/aztec.js/package.json @@ -74,7 +74,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/aztec/package.json b/yarn-project/aztec/package.json index 7d98ce7812f..7e9611f7afb 100644 --- a/yarn-project/aztec/package.json +++ b/yarn-project/aztec/package.json @@ -110,7 +110,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "engines": { "node": ">=18" diff --git a/yarn-project/bb-prover/package.json b/yarn-project/bb-prover/package.json index 9ea893b2962..9dff8dc8a80 100644 --- a/yarn-project/bb-prover/package.json +++ b/yarn-project/bb-prover/package.json @@ -63,7 +63,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/bot/package.json b/yarn-project/bot/package.json index 1bef173a590..f2f8c952824 100644 --- a/yarn-project/bot/package.json +++ b/yarn-project/bot/package.json @@ -50,7 +50,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/accounts": "workspace:^", diff --git a/yarn-project/builder/package.json b/yarn-project/builder/package.json index 602a934a970..801ccec15f4 100644 --- a/yarn-project/builder/package.json +++ b/yarn-project/builder/package.json @@ -66,7 +66,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/foundation": "workspace:^", diff --git a/yarn-project/circuit-types/package.json b/yarn-project/circuit-types/package.json index 32e46a6bd57..e8c4974633e 100644 --- a/yarn-project/circuit-types/package.json +++ b/yarn-project/circuit-types/package.json @@ -64,7 +64,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuits.js": "workspace:^", diff --git a/yarn-project/circuits.js/package.json b/yarn-project/circuits.js/package.json index ada850753b6..66d4573bdb0 100644 --- a/yarn-project/circuits.js/package.json +++ b/yarn-project/circuits.js/package.json @@ -98,6 +98,9 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } diff --git a/yarn-project/cli-wallet/package.json b/yarn-project/cli-wallet/package.json index 2d75d430b59..19bc75f4b98 100644 --- a/yarn-project/cli-wallet/package.json +++ b/yarn-project/cli-wallet/package.json @@ -64,7 +64,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/accounts": "workspace:^", diff --git a/yarn-project/cli/package.json b/yarn-project/cli/package.json index 1165f8b04fb..ea86f4fdb5d 100644 --- a/yarn-project/cli/package.json +++ b/yarn-project/cli/package.json @@ -64,7 +64,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/archiver": "workspace:^", diff --git a/yarn-project/end-to-end/package.json b/yarn-project/end-to-end/package.json index 1344ee5de94..c51b89150bb 100644 --- a/yarn-project/end-to-end/package.json +++ b/yarn-project/end-to-end/package.json @@ -156,6 +156,9 @@ }, "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$", "rootDir": "./src", - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } diff --git a/yarn-project/end-to-end/src/shared/browser.ts b/yarn-project/end-to-end/src/shared/browser.ts index c2abd9dca26..8110a697898 100644 --- a/yarn-project/end-to-end/src/shared/browser.ts +++ b/yarn-project/end-to-end/src/shared/browser.ts @@ -97,7 +97,7 @@ export const browserTestSuite = ( pageLogger.info(msg.text()); }); page.on('pageerror', err => { - pageLogger.error(err.toString()); + pageLogger.error(`Error on web page`, err); }); await page.goto(`${webServerURL}/index.html`); while (!(await page.evaluate(() => !!window.AztecJs))) { diff --git a/yarn-project/entrypoints/package.json b/yarn-project/entrypoints/package.json index bc4b5352b6a..d335c907978 100644 --- a/yarn-project/entrypoints/package.json +++ b/yarn-project/entrypoints/package.json @@ -60,7 +60,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/aztec.js": "workspace:^", diff --git a/yarn-project/epoch-cache/package.json b/yarn-project/epoch-cache/package.json index 30ff934d850..2db4ee09f3e 100644 --- a/yarn-project/epoch-cache/package.json +++ b/yarn-project/epoch-cache/package.json @@ -87,7 +87,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "engines": { "node": ">=18" diff --git a/yarn-project/ethereum/package.json b/yarn-project/ethereum/package.json index 0e34d8dcbf1..e9d6ec74d23 100644 --- a/yarn-project/ethereum/package.json +++ b/yarn-project/ethereum/package.json @@ -86,9 +86,12 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "engines": { "node": ">=18" } -} \ No newline at end of file +} diff --git a/yarn-project/foundation/package.json b/yarn-project/foundation/package.json index 36fd1e55a25..1f3bf0f9e97 100644 --- a/yarn-project/foundation/package.json +++ b/yarn-project/foundation/package.json @@ -97,7 +97,13 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFilesAfterEnv": [ + "../../foundation/src/jest/setup.mjs" + ], + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/bb.js": "portal:../../barretenberg/ts", diff --git a/yarn-project/foundation/src/jest/setup.mjs b/yarn-project/foundation/src/jest/setup.mjs new file mode 100644 index 00000000000..04519061c54 --- /dev/null +++ b/yarn-project/foundation/src/jest/setup.mjs @@ -0,0 +1,9 @@ +import { overwriteLoggingStream, pinoPrettyOpts } from '@aztec/foundation/log'; + +import pretty from 'pino-pretty'; + +// Overwrite logging stream with pino-pretty. We define this as a separate +// file so we don't mess up with dependencies in non-testing environments, +// since pino-pretty messes up with browser bundles. +// See also https://www.npmjs.com/package/pino-pretty?activeTab=readme#user-content-usage-with-jest +overwriteLoggingStream(pretty(pinoPrettyOpts)); diff --git a/yarn-project/foundation/src/log/pino-logger.ts b/yarn-project/foundation/src/log/pino-logger.ts index 10b19086939..81a6ec951e4 100644 --- a/yarn-project/foundation/src/log/pino-logger.ts +++ b/yarn-project/foundation/src/log/pino-logger.ts @@ -1,7 +1,6 @@ import { createColors } from 'colorette'; import isNode from 'detect-node'; import { pino, symbols } from 'pino'; -import pretty from 'pino-pretty'; import { type Writable } from 'stream'; import { inspect } from 'util'; @@ -68,7 +67,7 @@ const [logLevel, logFilters] = parseEnv(process.env.LOG_LEVEL, defaultLogLevel); // Transport options for pretty logging to stderr via pino-pretty. const useColor = true; const { bold, reset } = createColors({ useColor }); -const pinoPrettyOpts = { +export const pinoPrettyOpts = { destination: 2, sync: true, colorize: useColor, @@ -78,6 +77,7 @@ const pinoPrettyOpts = { customColors: 'fatal:bgRed,error:red,warn:yellow,info:green,verbose:magenta,debug:blue,trace:gray', minimumLevel: 'trace' as const, }; + const prettyTransport: pino.TransportSingleOptions = { target: 'pino-pretty', options: pinoPrettyOpts, @@ -113,11 +113,13 @@ const otelTransport: pino.TransportSingleOptions = { function makeLogger() { if (!isNode) { - // We are on the browser + // We are on the browser. return pino({ ...pinoOpts, browser: { asObject: false } }); } else if (process.env.JEST_WORKER_ID) { - // We are on jest, so we need sync logging. We stream to stderr with pretty. - return pino(pinoOpts, pretty(pinoPrettyOpts)); + // We are on jest, so we need sync logging and stream to stderr. + // We expect jest/setup.mjs to kick in later and replace set up a pretty logger, + // but if for some reason it doesn't, at least we're covered with a default logger. + return pino(pinoOpts, pino.destination(2)); } else { // Regular nodejs with transports on worker thread, using pino-pretty for console logging if LOG_JSON // is not set, and an optional OTLP transport if the OTLP endpoint is provided. @@ -142,6 +144,14 @@ logger.verbose( : `Browser console logger initialized with level ${logLevel}`, ); +/** + * Overwrites the logging stream with a different destination. + * Used by jest/setup.mjs to set up a pretty logger. + */ +export function overwriteLoggingStream(stream: Writable): void { + (logger as any)[symbols.streamSym] = stream; +} + /** * Registers an additional destination to the pino logger. * Use only when working with destinations, not worker transports. diff --git a/yarn-project/ivc-integration/package.json b/yarn-project/ivc-integration/package.json index cadb0ac977d..7b2b97b9bb0 100644 --- a/yarn-project/ivc-integration/package.json +++ b/yarn-project/ivc-integration/package.json @@ -59,7 +59,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/bb.js": "../../ts", diff --git a/yarn-project/key-store/package.json b/yarn-project/key-store/package.json index 8b13546037a..8409775334b 100644 --- a/yarn-project/key-store/package.json +++ b/yarn-project/key-store/package.json @@ -54,7 +54,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/kv-store/package.json b/yarn-project/kv-store/package.json index 1c795da1a6c..b4c97eb4474 100644 --- a/yarn-project/kv-store/package.json +++ b/yarn-project/kv-store/package.json @@ -91,6 +91,9 @@ ], "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$", "rootDir": "./src", - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } diff --git a/yarn-project/merkle-tree/package.json b/yarn-project/merkle-tree/package.json index 47e394fda28..096700c8bbf 100644 --- a/yarn-project/merkle-tree/package.json +++ b/yarn-project/merkle-tree/package.json @@ -55,7 +55,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/noir-contracts.js/package.json b/yarn-project/noir-contracts.js/package.json index 71bad516291..c54eb0a5965 100644 --- a/yarn-project/noir-contracts.js/package.json +++ b/yarn-project/noir-contracts.js/package.json @@ -54,7 +54,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/aztec.js": "workspace:^", diff --git a/yarn-project/noir-protocol-circuits-types/package.json b/yarn-project/noir-protocol-circuits-types/package.json index 3f2549b9005..4168c9fc5ff 100644 --- a/yarn-project/noir-protocol-circuits-types/package.json +++ b/yarn-project/noir-protocol-circuits-types/package.json @@ -58,7 +58,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuits.js": "workspace:^", diff --git a/yarn-project/p2p-bootstrap/package.json b/yarn-project/p2p-bootstrap/package.json index 6da59d79665..f1f6942279d 100644 --- a/yarn-project/p2p-bootstrap/package.json +++ b/yarn-project/p2p-bootstrap/package.json @@ -82,7 +82,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "engines": { "node": ">=18" diff --git a/yarn-project/p2p/package.json b/yarn-project/p2p/package.json index 79ed2a4b867..69c44f33562 100644 --- a/yarn-project/p2p/package.json +++ b/yarn-project/p2p/package.json @@ -60,7 +60,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/package.common.json b/yarn-project/package.common.json index 8fd6e79b1fd..5d7e61c0e2a 100644 --- a/yarn-project/package.common.json +++ b/yarn-project/package.common.json @@ -55,6 +55,9 @@ ], "testTimeout": 30000, "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$", - "rootDir": "./src" + "rootDir": "./src", + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } \ No newline at end of file diff --git a/yarn-project/proof-verifier/package.json b/yarn-project/proof-verifier/package.json index 53799548865..9dcd38472e9 100644 --- a/yarn-project/proof-verifier/package.json +++ b/yarn-project/proof-verifier/package.json @@ -75,6 +75,9 @@ ], "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$", "rootDir": "./src", - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } diff --git a/yarn-project/protocol-contracts/package.json b/yarn-project/protocol-contracts/package.json index ad6618938f8..d12d967b95e 100644 --- a/yarn-project/protocol-contracts/package.json +++ b/yarn-project/protocol-contracts/package.json @@ -65,7 +65,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuits.js": "workspace:^", diff --git a/yarn-project/prover-client/package.json b/yarn-project/prover-client/package.json index 86a92c7c519..4bf5b869215 100644 --- a/yarn-project/prover-client/package.json +++ b/yarn-project/prover-client/package.json @@ -64,7 +64,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/bb-prover": "workspace:^", diff --git a/yarn-project/prover-node/package.json b/yarn-project/prover-node/package.json index d4ee18d170b..27bb2c8bd60 100644 --- a/yarn-project/prover-node/package.json +++ b/yarn-project/prover-node/package.json @@ -50,7 +50,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/archiver": "workspace:^", diff --git a/yarn-project/pxe/package.json b/yarn-project/pxe/package.json index 1338e301b2e..5320283c7d5 100644 --- a/yarn-project/pxe/package.json +++ b/yarn-project/pxe/package.json @@ -65,7 +65,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/bb-prover": "workspace:^", diff --git a/yarn-project/scripts/package.json b/yarn-project/scripts/package.json index 0b62716012f..a0cb7920eff 100644 --- a/yarn-project/scripts/package.json +++ b/yarn-project/scripts/package.json @@ -84,7 +84,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "engines": { "node": ">=18" diff --git a/yarn-project/sequencer-client/package.json b/yarn-project/sequencer-client/package.json index e5c56b8809d..33437775006 100644 --- a/yarn-project/sequencer-client/package.json +++ b/yarn-project/sequencer-client/package.json @@ -110,6 +110,9 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } diff --git a/yarn-project/simulator/package.json b/yarn-project/simulator/package.json index 53d15188c54..8c3668fd8fa 100644 --- a/yarn-project/simulator/package.json +++ b/yarn-project/simulator/package.json @@ -60,7 +60,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/telemetry-client/package.json b/yarn-project/telemetry-client/package.json index 2df1379cd7c..15ef986d543 100644 --- a/yarn-project/telemetry-client/package.json +++ b/yarn-project/telemetry-client/package.json @@ -84,6 +84,9 @@ ], "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$", "rootDir": "./src", - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] } } diff --git a/yarn-project/txe/package.json b/yarn-project/txe/package.json index ff673d798d8..79132b5d369 100644 --- a/yarn-project/txe/package.json +++ b/yarn-project/txe/package.json @@ -58,7 +58,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/accounts": "workspace:^", diff --git a/yarn-project/types/package.json b/yarn-project/types/package.json index 688b9ea661b..9c0adbd1c67 100644 --- a/yarn-project/types/package.json +++ b/yarn-project/types/package.json @@ -60,7 +60,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/ethereum": "workspace:^", diff --git a/yarn-project/validator-client/package.json b/yarn-project/validator-client/package.json index 127f4a25e57..637cbb5a31e 100644 --- a/yarn-project/validator-client/package.json +++ b/yarn-project/validator-client/package.json @@ -57,7 +57,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^", diff --git a/yarn-project/world-state/package.json b/yarn-project/world-state/package.json index b684e5055e2..4da25512fd1 100644 --- a/yarn-project/world-state/package.json +++ b/yarn-project/world-state/package.json @@ -60,7 +60,10 @@ } ] ], - "testTimeout": 30000 + "testTimeout": 30000, + "setupFiles": [ + "../../foundation/src/jest/setup.mjs" + ] }, "dependencies": { "@aztec/circuit-types": "workspace:^",