import {exec} from 'child-process-promise';
import {readFileSync} from 'fs';
import path from 'path';
import {rimrafSync} from 'rimraf';
describe('x_google_ignoreList source map extension', () => {
jest.setTimeout(60 * 1000);
const pathToExtensionsPackage = path.resolve(__dirname, '..', '..');
const pathToChromeExtensionBuild = path.join(
pathToExtensionsPackage,
'chrome/build',
);
const pathToSourceMap = path.resolve(
pathToChromeExtensionBuild,
'unpacked/build/react_devtools_backend_compact.js.map',
);
afterAll(() => {
rimrafSync(pathToChromeExtensionBuild);
});
describe('for dev builds', () => {
it('should include only sources with /node_modules/ and /webpack/ in path', async () => {
await exec('yarn build:chrome:local', {
cwd: pathToExtensionsPackage,
});
const sourceMapJSON = readFileSync(pathToSourceMap);
const sourceMap = JSON.parse(sourceMapJSON);
const {sources, x_google_ignoreList} = sourceMap;
const expectedIgnoreList = [];
for (let sourceIndex = 0; sourceIndex < sources.length; ++sourceIndex) {
const source = sources[sourceIndex];
if (source.includes('/node_modules/') || source.includes('/webpack/')) {
expectedIgnoreList.push(sourceIndex);
}
}
expect(x_google_ignoreList).toEqual(expectedIgnoreList);
});
});
describe('for production builds', function () {
it('should include every source', async () => {
await exec('yarn build:chrome', {cwd: pathToExtensionsPackage});
const sourceMapJSON = readFileSync(pathToSourceMap);
const sourceMap = JSON.parse(sourceMapJSON);
const {sources, x_google_ignoreList} = sourceMap;
expect(sources.length).toBe(x_google_ignoreList.length);
});
});
});