@johnf/react-native-owl
Version:
Visual regression testing for React Native
130 lines (129 loc) • 5.99 kB
JavaScript
;
var _execa = _interopRequireDefault(require("execa"));
var _path = _interopRequireDefault(require("path"));
var _fs = require("fs");
var _screenshot = require("./screenshot.js");
var fileExistsHelpers = _interopRequireWildcard(require("./utils/file-exists.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const SCREENSHOT_FILENAME = 'screen';
describe('screenshot.ts', () => {
const commandMock = jest.spyOn(_execa.default, 'command');
const mkdirMock = jest.spyOn(_fs.promises, 'mkdir').mockImplementation();
const writeFileMock = jest.spyOn(_fs.promises, 'writeFile').mockImplementation();
const cwdMock = jest.spyOn(process, 'cwd').mockReturnValue('/Users/johndoe/Projects/my-project');
beforeAll(() => {
delete process.env.OWL_PLATFORM;
delete process.env.OWL_DEBUG;
delete process.env.OWL_IOS_SIMULATOR;
});
beforeEach(() => {
commandMock.mockReset();
mkdirMock.mockReset();
writeFileMock.mockReset();
});
afterAll(() => {
cwdMock.mockRestore();
});
describe('Baseline', () => {
beforeAll(() => {
process.env.OWL_UPDATE_BASELINE = 'true';
process.env.OWL_IOS_SIMULATOR = undefined;
});
describe('iOS', () => {
beforeAll(() => {
process.env.OWL_PLATFORM = 'ios';
process.env.OWL_DEBUG = 'false';
process.env.OWL_IOS_SIMULATOR = 'iPhone Simulator';
});
it('should take a screenshot', async () => {
await (0, _screenshot.takeScreenshot)(SCREENSHOT_FILENAME);
expect(commandMock).toHaveBeenCalledWith('xcrun simctl io iPhone\\ Simulator screenshot screen.png', {
cwd: _path.default.join(process.cwd(), '.owl', 'baseline', 'ios'),
shell: false,
stdio: 'ignore'
});
expect(mkdirMock).toHaveBeenNthCalledWith(1, '/Users/johndoe/Projects/my-project/.owl', {
recursive: true
});
expect(mkdirMock).toHaveBeenNthCalledWith(2, '/Users/johndoe/Projects/my-project/.owl/baseline/ios', {
recursive: true
});
});
});
describe('Android', () => {
beforeAll(() => {
process.env.OWL_PLATFORM = 'android';
process.env.OWL_DEBUG = 'false';
});
it('should take a screenshot', async () => {
await (0, _screenshot.takeScreenshot)(SCREENSHOT_FILENAME);
expect(commandMock).toHaveBeenCalledWith('adb exec-out screencap -p > screen.png', {
cwd: _path.default.join(process.cwd(), '.owl', 'baseline', 'android'),
shell: true,
stdio: 'ignore'
});
expect(mkdirMock).toHaveBeenNthCalledWith(1, '/Users/johndoe/Projects/my-project/.owl', {
recursive: true
});
expect(mkdirMock).toHaveBeenNthCalledWith(2, '/Users/johndoe/Projects/my-project/.owl/baseline/android', {
recursive: true
});
});
});
});
describe('Latest', () => {
beforeAll(() => {
process.env.OWL_UPDATE_BASELINE = 'false';
});
describe('iOS', () => {
beforeAll(() => {
process.env.OWL_PLATFORM = 'ios';
process.env.OWL_DEBUG = 'false';
process.env.OWL_IOS_SIMULATOR = 'iPhone Simulator';
});
it('should take a screenshot', async () => {
jest.spyOn(fileExistsHelpers, 'fileExists').mockResolvedValueOnce(true).mockResolvedValueOnce(true);
await (0, _screenshot.takeScreenshot)(SCREENSHOT_FILENAME);
expect(commandMock).toHaveBeenCalledWith('xcrun simctl io iPhone\\ Simulator screenshot screen.png', {
cwd: _path.default.join(process.cwd(), '.owl', 'latest', 'ios'),
shell: false,
stdio: 'ignore'
});
});
it('should take a screenshot - baseline does not exist', async () => {
await (0, _screenshot.takeScreenshot)(SCREENSHOT_FILENAME);
expect(commandMock).toHaveBeenCalledWith('xcrun simctl io iPhone\\ Simulator screenshot screen.png', {
cwd: _path.default.join(process.cwd(), '.owl', 'baseline', 'ios'),
shell: false,
stdio: 'ignore'
});
});
});
describe('Android', () => {
beforeAll(() => {
process.env.OWL_PLATFORM = 'android';
process.env.OWL_DEBUG = 'false';
});
it('should take a screenshot', async () => {
jest.spyOn(fileExistsHelpers, 'fileExists').mockResolvedValueOnce(true).mockResolvedValueOnce(true);
await (0, _screenshot.takeScreenshot)(SCREENSHOT_FILENAME);
expect(commandMock).toHaveBeenCalledWith('adb exec-out screencap -p > screen.png', {
cwd: _path.default.join(process.cwd(), '.owl', 'latest', 'android'),
shell: true,
stdio: 'ignore'
});
});
it('should take a screenshot - baseline does not exist', async () => {
await (0, _screenshot.takeScreenshot)(SCREENSHOT_FILENAME);
expect(commandMock).toHaveBeenCalledWith('adb exec-out screencap -p > screen.png', {
cwd: _path.default.join(process.cwd(), '.owl', 'baseline', 'android'),
shell: true,
stdio: 'ignore'
});
});
});
});
});
//# sourceMappingURL=screenshot.test.js.map