diff --git a/packages/agent/karma.conf.cjs b/packages/agent/karma.conf.cjs index aa89cbca8..6b7407b2c 100644 --- a/packages/agent/karma.conf.cjs +++ b/packages/agent/karma.conf.cjs @@ -30,14 +30,15 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, - // list of files / patterns to load in the browser files: [ { pattern: 'tests/**/*.spec.ts', watched: false }, diff --git a/packages/agent/tests/dwn-manager.spec.ts b/packages/agent/tests/dwn-manager.spec.ts index 8089b8b4c..e3e9b9fa6 100644 --- a/packages/agent/tests/dwn-manager.spec.ts +++ b/packages/agent/tests/dwn-manager.spec.ts @@ -12,6 +12,7 @@ import { RecordsDeleteMessage, } from '@tbd54566975/dwn-sdk-js'; +import { testDwnUrl } from './test-config.js'; import { TestAgent } from './utils/test-agent.js'; import { DwnManager } from '../src/dwn-manager.js'; import { ManagedIdentity } from '../src/identity-manager.js'; @@ -26,8 +27,7 @@ if (!globalThis.crypto) globalThis.crypto = webcrypto; chai.use(chaiAsPromised); -// let dwnNodes: string[] = ['https://dwn.tbddev.org/dwn0']; -let dwnNodes: string[] = ['http://localhost:3000']; +let testDwnUrls: string[] = [testDwnUrl]; describe('DwnManager', () => { @@ -279,7 +279,7 @@ describe('DwnManager', () => { type : 'DecentralizedWebNode', serviceEndpoint : { encryptionKeys : ['#dwn-enc'], - nodes : dwnNodes, + nodes : testDwnUrls, signingKeys : ['#dwn-sig'] } }]; diff --git a/packages/agent/tests/test-config.ts b/packages/agent/tests/test-config.ts new file mode 100644 index 000000000..213604404 --- /dev/null +++ b/packages/agent/tests/test-config.ts @@ -0,0 +1,24 @@ +declare const __karma__: { config?: { testDwnUrl?: string; } }; + +const DEFAULT_TEST_DWN_URL = 'https://dwn.tbddev.org/dwn0'; + +function getTestDwnUrl(): string { + // Check to see if we're running in a Karma browser test environment. + const browserTestEnvironment = typeof __karma__ !== 'undefined' && __karma__?.config?.testDwnUrl !== undefined; + + // Check to see if we're running in a Node environment. + const nodeTestEnvironment = process && process?.env !== undefined; + + // Attempt to use DWN URL defined in Karma config, if running a browser test. + // Otherwise, attempt to use the Node environment variable. + const envTestDwnUrl = (browserTestEnvironment) + ? __karma__.config!.testDwnUrl + : (nodeTestEnvironment) + ? process.env.TEST_DWN_URL + : undefined; + + // If defined, return the test environment DWN URL. Otherwise, return the default. + return envTestDwnUrl || DEFAULT_TEST_DWN_URL; +} + +export const testDwnUrl = getTestDwnUrl(); \ No newline at end of file diff --git a/packages/api/karma.conf.cjs b/packages/api/karma.conf.cjs index e114c588c..6b7407b2c 100644 --- a/packages/api/karma.conf.cjs +++ b/packages/api/karma.conf.cjs @@ -30,23 +30,23 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, // list of files / patterns to load in the browser files: [ - // { pattern: 'tests/test-user-agent.ts', watched: false }, { pattern: 'tests/**/*.spec.ts', watched: false }, ], // preprocess matching files before serving them to the browser // available preprocessors: https://www.npmjs.com/search?q=keywords:karma-preprocessor preprocessors: { - // 'tests/test-user-agent.ts' : ['esbuild'], 'tests/**/*.spec.ts': ['esbuild'], }, @@ -68,7 +68,7 @@ module.exports = function (config) { // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || // config.LOG_INFO || config.LOG_DEBUG - logLevel: config.INFO, + logLevel: config.LOG_INFO, concurrency: 1, diff --git a/packages/api/tests/record.spec.ts b/packages/api/tests/record.spec.ts index 5897baa12..c0303251c 100644 --- a/packages/api/tests/record.spec.ts +++ b/packages/api/tests/record.spec.ts @@ -12,6 +12,7 @@ import { ManagedIdentity, TestManagedAgent } from '@web5/agent'; import { Record } from '../src/record.js'; import { DwnApi } from '../src/dwn-api.js'; import { dataToBlob } from '../src/utils.js'; +import { testDwnUrl } from './test-config.js'; import { TestUserAgent } from './utils/test-user-agent.js'; import { TestDataGenerator } from './utils/test-data-generator.js'; @@ -28,6 +29,8 @@ if (!globalThis.crypto) globalThis.crypto = webcrypto; // TODO: Come up with a better way of resolving the TS errors. type RecordsWriteTest = RecordsWrite & RecordsWriteMessage; +let testDwnUrls: string[] = [testDwnUrl]; + describe('Record', () => { let dataText: string; let dataBlob: Blob; diff --git a/packages/api/tests/test-config.ts b/packages/api/tests/test-config.ts new file mode 100644 index 000000000..213604404 --- /dev/null +++ b/packages/api/tests/test-config.ts @@ -0,0 +1,24 @@ +declare const __karma__: { config?: { testDwnUrl?: string; } }; + +const DEFAULT_TEST_DWN_URL = 'https://dwn.tbddev.org/dwn0'; + +function getTestDwnUrl(): string { + // Check to see if we're running in a Karma browser test environment. + const browserTestEnvironment = typeof __karma__ !== 'undefined' && __karma__?.config?.testDwnUrl !== undefined; + + // Check to see if we're running in a Node environment. + const nodeTestEnvironment = process && process?.env !== undefined; + + // Attempt to use DWN URL defined in Karma config, if running a browser test. + // Otherwise, attempt to use the Node environment variable. + const envTestDwnUrl = (browserTestEnvironment) + ? __karma__.config!.testDwnUrl + : (nodeTestEnvironment) + ? process.env.TEST_DWN_URL + : undefined; + + // If defined, return the test environment DWN URL. Otherwise, return the default. + return envTestDwnUrl || DEFAULT_TEST_DWN_URL; +} + +export const testDwnUrl = getTestDwnUrl(); \ No newline at end of file diff --git a/packages/api/tests/web5-dwn.spec.ts b/packages/api/tests/web5-dwn.spec.ts index 36be516ac..e90d5dcd7 100644 --- a/packages/api/tests/web5-dwn.spec.ts +++ b/packages/api/tests/web5-dwn.spec.ts @@ -2,11 +2,11 @@ import { expect } from 'chai'; import { TestManagedAgent } from '@web5/agent'; import { DwnApi } from '../src/dwn-api.js'; +import { testDwnUrl } from './test-config.js'; import { TestUserAgent } from './utils/test-user-agent.js'; import emailProtocolDefinition from './fixtures/protocol-definitions/email.json' assert { type: 'json' }; -// let dwnNodes: string[] = ['https://dwn.tbddev.org/dwn0']; -let dwnNodes: string[] = ['http://localhost:3000']; +let testDwnUrls: string[] = [testDwnUrl]; describe('web5.dwn', () => { let dwn: DwnApi; @@ -30,7 +30,7 @@ describe('web5.dwn', () => { type : 'DecentralizedWebNode', serviceEndpoint : { encryptionKeys : ['#dwn-enc'], - nodes : dwnNodes, + nodes : testDwnUrls, signingKeys : ['#dwn-sig'] } }]; diff --git a/packages/common/karma.conf.cjs b/packages/common/karma.conf.cjs index aa89cbca8..6b7407b2c 100644 --- a/packages/common/karma.conf.cjs +++ b/packages/common/karma.conf.cjs @@ -30,14 +30,15 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, - // list of files / patterns to load in the browser files: [ { pattern: 'tests/**/*.spec.ts', watched: false }, diff --git a/packages/credentials/karma.conf.cjs b/packages/credentials/karma.conf.cjs index aa89cbca8..6b7407b2c 100644 --- a/packages/credentials/karma.conf.cjs +++ b/packages/credentials/karma.conf.cjs @@ -30,14 +30,15 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, - // list of files / patterns to load in the browser files: [ { pattern: 'tests/**/*.spec.ts', watched: false }, diff --git a/packages/crypto/karma.conf.cjs b/packages/crypto/karma.conf.cjs index 083f0c963..6b7407b2c 100644 --- a/packages/crypto/karma.conf.cjs +++ b/packages/crypto/karma.conf.cjs @@ -30,11 +30,13 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, // list of files / patterns to load in the browser diff --git a/packages/dids/karma.conf.cjs b/packages/dids/karma.conf.cjs index 083f0c963..6b7407b2c 100644 --- a/packages/dids/karma.conf.cjs +++ b/packages/dids/karma.conf.cjs @@ -30,11 +30,13 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, // list of files / patterns to load in the browser diff --git a/packages/identity-agent/karma.conf.cjs b/packages/identity-agent/karma.conf.cjs index aa89cbca8..6b7407b2c 100644 --- a/packages/identity-agent/karma.conf.cjs +++ b/packages/identity-agent/karma.conf.cjs @@ -30,14 +30,15 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, - // list of files / patterns to load in the browser files: [ { pattern: 'tests/**/*.spec.ts', watched: false }, diff --git a/packages/proxy-agent/karma.conf.cjs b/packages/proxy-agent/karma.conf.cjs index aa89cbca8..6b7407b2c 100644 --- a/packages/proxy-agent/karma.conf.cjs +++ b/packages/proxy-agent/karma.conf.cjs @@ -30,14 +30,15 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, - // list of files / patterns to load in the browser files: [ { pattern: 'tests/**/*.spec.ts', watched: false }, diff --git a/packages/user-agent/karma.conf.cjs b/packages/user-agent/karma.conf.cjs index aa89cbca8..6b7407b2c 100644 --- a/packages/user-agent/karma.conf.cjs +++ b/packages/user-agent/karma.conf.cjs @@ -30,14 +30,15 @@ module.exports = function (config) { // available frameworks: https://www.npmjs.com/search?q=keywords:karma-adapter frameworks: ['mocha'], - // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. client: { + // Increase Mocha's default timeout of 2 seconds to prevent timeouts during GitHub CI runs. mocha: { timeout: 10000 // 10 seconds - } + }, + // If an environment variable is defined, override the default test DWN URL. + testDwnUrl: process.env.TEST_DWN_URL, }, - // list of files / patterns to load in the browser files: [ { pattern: 'tests/**/*.spec.ts', watched: false },