3a4992633e
Sorry for the very big commit that may lead to git log issues and merge conflicts, but it's a major step forward: * Server can be faster at startup because imports() are async and we can easily lazy import big modules * Angular doesn't seem to support ES import (with .js extension), so we had to correctly organize peertube into a monorepo: * Use yarn workspace feature * Use typescript reference projects for dependencies * Shared projects have been moved into "packages", each one is now a node module (with a dedicated package.json/tsconfig.json) * server/tools have been moved into apps/ and is now a dedicated app bundled and published on NPM so users don't have to build peertube cli tools manually * server/tests have been moved into packages/ so we don't compile them every time we want to run the server * Use isolatedModule option: * Had to move from const enum to const (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums) * Had to explictely specify "type" imports when used in decorators * Prefer tsx (that uses esbuild under the hood) instead of ts-node to load typescript files (tests with mocha or scripts): * To reduce test complexity as esbuild doesn't support decorator metadata, we only test server files that do not import server models * We still build tests files into js files for a faster CI * Remove unmaintained peertube CLI import script * Removed some barrels to speed up execution (less imports)
116 lines
3.7 KiB
TypeScript
116 lines
3.7 KiB
TypeScript
export const config = {
|
|
//
|
|
// ====================
|
|
// Runner Configuration
|
|
// ====================
|
|
//
|
|
//
|
|
// ==================
|
|
// Specify Test Files
|
|
// ==================
|
|
// Define which test specs should run. The pattern is relative to the directory
|
|
// from which `wdio` was called.
|
|
//
|
|
// The specs are defined as an array of spec files (optionally using wildcards
|
|
// that will be expanded). The test for each spec file will be run in a separate
|
|
// worker process. In order to have a group of spec files run in the same worker
|
|
// process simply enclose them in an array within the specs array.
|
|
//
|
|
// If you are calling `wdio` from an NPM script (see https://docs.npmjs.com/cli/run-script),
|
|
// then the current working directory is where your `package.json` resides, so `wdio`
|
|
// will be called from there.
|
|
//
|
|
specs: [
|
|
'./src/suites-all/*.e2e-spec.ts',
|
|
'./src/suites-local/*.e2e-spec.ts'
|
|
],
|
|
// Patterns to exclude.
|
|
exclude: [
|
|
// 'path/to/excluded/files'
|
|
],
|
|
//
|
|
// ===================
|
|
// Test Configurations
|
|
// ===================
|
|
// Define all options that are relevant for the WebdriverIO instance here
|
|
//
|
|
// Level of logging verbosity: trace | debug | info | warn | error | silent
|
|
logLevel: 'info',
|
|
//
|
|
// Set specific log levels per logger
|
|
// loggers:
|
|
// - webdriver, webdriverio
|
|
// - @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service
|
|
// - @wdio/mocha-framework, @wdio/jasmine-framework
|
|
// - @wdio/local-runner
|
|
// - @wdio/sumologic-reporter
|
|
// - @wdio/cli, @wdio/config, @wdio/utils
|
|
// Level of logging verbosity: trace | debug | info | warn | error | silent
|
|
// logLevels: {
|
|
// webdriver: 'info',
|
|
// '@wdio/appium-service': 'info'
|
|
// },
|
|
//
|
|
// If you only want to run your tests until a specific amount of tests have failed use
|
|
// bail (default is 0 - don't bail, run all tests).
|
|
bail: 0,
|
|
//
|
|
// Set a base URL in order to shorten url command calls. If your `url` parameter starts
|
|
// with `/`, the base url gets prepended, not including the path portion of your baseUrl.
|
|
// If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
|
|
// gets prepended directly.
|
|
baseUrl: 'http://localhost:9001',
|
|
//
|
|
// Default timeout for all waitFor* commands.
|
|
waitforTimeout: 5000,
|
|
//
|
|
// Default timeout in milliseconds for request
|
|
// if browser driver or grid doesn't send response
|
|
connectionRetryTimeout: 120000,
|
|
//
|
|
// Default request retries count
|
|
connectionRetryCount: 3,
|
|
|
|
// Framework you want to run your specs with.
|
|
// The following are supported: Mocha, Jasmine, and Cucumber
|
|
// see also: https://webdriver.io/docs/frameworks
|
|
//
|
|
// Make sure you have the wdio adapter package for the specific framework installed
|
|
// before running any tests.
|
|
framework: 'mocha',
|
|
//
|
|
// The number of times to retry the entire specfile when it fails as a whole
|
|
specFileRetries: 1,
|
|
//
|
|
// Delay in seconds between the spec file retry attempts
|
|
// specFileRetriesDelay: 0,
|
|
//
|
|
// Whether or not retried specfiles should be retried immediately or deferred to the end of the queue
|
|
// specFileRetriesDeferred: false,
|
|
//
|
|
// Test reporter for stdout.
|
|
// The only one supported by default is 'dot'
|
|
// see also: https://webdriver.io/docs/dot-reporter
|
|
reporters: [ 'spec' ],
|
|
|
|
//
|
|
// Options to be passed to Mocha.
|
|
// See the full list at http://mochajs.org/
|
|
mochaOpts: {
|
|
ui: 'bdd',
|
|
timeout: 60000,
|
|
bail: true
|
|
},
|
|
|
|
autoCompileOpts: {
|
|
autoCompile: true,
|
|
|
|
tsNodeOpts: {
|
|
project: require('path').join(__dirname, './tsconfig.json')
|
|
}
|
|
},
|
|
|
|
before: function () {
|
|
require('./src/commands/upload')
|
|
}
|
|
} as Partial<WebdriverIO.Config>
|