Skip to content

Commit

Permalink
fix(test): fix testing.testEnvironment setting
Browse files Browse the repository at this point in the history
Closes #2425
  • Loading branch information
adamdbradley committed Jul 15, 2020
1 parent 60617c9 commit 645f3a0
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
25 changes: 25 additions & 0 deletions src/compiler/config/test/validate-testing.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ describe('validateTesting', () => {
srcDir: path.join(ROOT, 'User', 'some', 'path', 'src'),
flags: {},
namespace: 'Testing',
configPath: path.join(ROOT, 'User', 'some', 'path', 'stencil.config.ts'),
};
userConfig.outputTargets = [
({
Expand Down Expand Up @@ -94,4 +95,28 @@ describe('validateTesting', () => {
path.join(ROOT, 'User', 'some', 'path', 'dist-folder'),
]);
});

it('set relative testEnvironment to absolute', () => {
userConfig.flags.e2e = true;
userConfig.testing = {
testEnvironment: './rel-path.js',
};
const { config } = validateConfig(userConfig);
expect(path.isAbsolute(config.testing.testEnvironment)).toBe(true);
expect(path.basename(config.testing.testEnvironment)).toEqual('rel-path.js');
});

it('set node module testEnvironment', () => {
userConfig.flags.e2e = true;
userConfig.testing = {
testEnvironment: 'jsdom',
};
const { config } = validateConfig(userConfig);
expect(config.testing.testEnvironment).toEqual('jsdom');
});

it('do nothing for empty testEnvironment', () => {
const { config } = validateConfig(userConfig);
expect(config.testing.testEnvironment).toBeUndefined();
});
});
21 changes: 16 additions & 5 deletions src/compiler/config/validate-testing.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import * as d from '../../declarations';
import { buildError, buildWarn } from '@utils';
import { isAbsolute, join } from 'path';
import { isAbsolute, join, basename, dirname } from 'path';
import { isOutputTargetDist, isOutputTargetWww } from '../output-targets/output-utils';
import { isLocalModule } from '../sys/resolve/resolve-utils';
import { isString } from 'util';

export const validateTesting = (config: d.Config, diagnostics: d.Diagnostic[]) => {
const testing = (config.testing = Object.assign({}, config.testing || {}));
Expand All @@ -10,6 +12,15 @@ export const validateTesting = (config: d.Config, diagnostics: d.Diagnostic[]) =
return;
}

let configPathDir = config.configPath;
if (isString(configPathDir)) {
if (basename(configPathDir).includes('.')) {
configPathDir = dirname(configPathDir);
}
} else {
configPathDir = config.rootDir;
}

if (typeof config.flags.headless === 'boolean') {
testing.browserHeadless = config.flags.headless;
} else if (typeof testing.browserHeadless !== 'boolean') {
Expand Down Expand Up @@ -66,7 +77,7 @@ export const validateTesting = (config: d.Config, diagnostics: d.Diagnostic[]) =
if (typeof testing.preset !== 'string') {
testing.preset = join(config.sys.getCompilerExecutingPath(), '..', '..', 'testing');
} else if (!isAbsolute(testing.preset)) {
testing.preset = join(config.configPath, testing.preset);
testing.preset = join(configPathDir, testing.preset);
}

if (!Array.isArray(testing.setupFilesAfterEnv)) {
Expand All @@ -79,9 +90,9 @@ export const validateTesting = (config: d.Config, diagnostics: d.Diagnostic[]) =
err.messageText = `setupTestFrameworkScriptFile has been deprecated.`;
}

if (typeof testing.testEnvironment === 'string') {
if (!isAbsolute(testing.testEnvironment)) {
testing.testEnvironment = join(config.configPath, testing.testEnvironment);
if (isString(testing.testEnvironment)) {
if (!isAbsolute(testing.testEnvironment) && isLocalModule(testing.testEnvironment)) {
testing.testEnvironment = join(configPathDir, testing.testEnvironment);
}
}

Expand Down

0 comments on commit 645f3a0

Please sign in to comment.