creevey 0.9.0-beta.0 → 0.9.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,8 +10,6 @@ var Events = _interopRequireWildcard(require("@storybook/core-events"));
10
10
 
11
11
  var polyfill = _interopRequireWildcard(require("event-source-polyfill"));
12
12
 
13
- var _testingLibrary = require("@storybook/testing-library");
14
-
15
13
  var _addons = require("@storybook/addons");
16
14
 
17
15
  var _types = require("../../types");
@@ -24,14 +22,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
24
22
 
25
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
24
 
27
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
28
-
29
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
30
-
31
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
32
-
33
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
34
-
35
25
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
36
26
 
37
27
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -441,37 +431,23 @@ function withCreevey() {
441
431
  window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
442
432
  window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
443
433
  window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
444
- window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop;
434
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop; // const queryAllByQuery = (container: HTMLElement, query: string): HTMLElement[] =>
435
+ // [...container.querySelectorAll(query)].filter((e) => e instanceof HTMLElement) as HTMLElement[];
436
+ // const getMultipleError = (_: Element | null, query: string): string => `Found multiple elements by query: ${query}`;
437
+ // const getMissingError = (_: Element | null, query: string): string => `Unable to find an element by query: ${query}`;
438
+ // const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
439
+ // queryAllByQuery,
440
+ // getMultipleError,
441
+ // getMissingError,
442
+ // );
443
+ // const queries = {
444
+ // queryByQuery,
445
+ // getAllByQuery,
446
+ // getByQuery,
447
+ // findAllByQuery,
448
+ // findByQuery,
449
+ // };
445
450
 
446
- var queryAllByQuery = function queryAllByQuery(container, query) {
447
- return _toConsumableArray(container.querySelectorAll(query)).filter(function (e) {
448
- return e instanceof HTMLElement;
449
- });
450
- };
451
-
452
- var getMultipleError = function getMultipleError(_, query) {
453
- return "Found multiple elements by query: ".concat(query);
454
- };
455
-
456
- var getMissingError = function getMissingError(_, query) {
457
- return "Unable to find an element by query: ".concat(query);
458
- };
459
-
460
- var _buildQueries = (0, _testingLibrary.buildQueries)(queryAllByQuery, getMultipleError, getMissingError),
461
- _buildQueries2 = _slicedToArray(_buildQueries, 5),
462
- queryByQuery = _buildQueries2[0],
463
- getAllByQuery = _buildQueries2[1],
464
- getByQuery = _buildQueries2[2],
465
- findAllByQuery = _buildQueries2[3],
466
- findByQuery = _buildQueries2[4];
467
-
468
- var queries = {
469
- queryByQuery: queryByQuery,
470
- getAllByQuery: getAllByQuery,
471
- getByQuery: getByQuery,
472
- findAllByQuery: findAllByQuery,
473
- findByQuery: findByQuery
474
- };
475
451
  return (0, _addons.makeDecorator)({
476
452
  name: 'withCreevey',
477
453
  parameterName: 'creevey',
@@ -490,9 +466,8 @@ function withCreevey() {
490
466
 
491
467
  case captureElement === null:
492
468
  return Promise.resolve(document.documentElement);
493
-
494
- case typeof captureElement == 'string':
495
- return (0, _testingLibrary.within)(context.canvasElement, queries).findByQuery(captureElement);
469
+ // case typeof captureElement == 'string':
470
+ // return within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
496
471
 
497
472
  case typeof captureElement == 'function':
498
473
  // TODO Define type for it
package/lib/cjs/index.js CHANGED
@@ -47,7 +47,7 @@ var _nodejs = require("./server/storybook/providers/nodejs");
47
47
 
48
48
  var _hybrid = require("./server/storybook/providers/hybrid");
49
49
 
50
- var _parser = require("./server/parser");
50
+ var _parser = require("./server/testsFiles/parser");
51
51
 
52
52
  Object.keys(_parser).forEach(function (key) {
53
53
  if (key === "default" || key === "__esModule") return;
@@ -47,7 +47,7 @@ const defaultConfig = {
47
47
  },
48
48
  hooks: {},
49
49
  babelOptions: _ => _,
50
- testRegex: /.creevey.(t|j)s$/
50
+ testsRegex: /\.creevey\.(t|j)s$/
51
51
  };
52
52
  exports.defaultConfig = defaultConfig;
53
53
 
@@ -433,7 +433,7 @@ async function resolveCreeveyHost(browser, port) {
433
433
  return new Promise(function (resolve, reject) {
434
434
  setTimeout(reject, 10000); // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
435
435
 
436
- fetch('http://' + host + ':' + port + '/ping').then(resolve).catch(reject);
436
+ fetch('//' + host + ':' + port + '/ping').then(resolve).catch(reject);
437
437
  }).then(function (response) {
438
438
  return response.text();
439
439
  }).then(function (pong) {
@@ -11,7 +11,7 @@ var _browser = require("./browser");
11
11
 
12
12
  var _logger = require("../../logger");
13
13
 
14
- var _parser = _interopRequireDefault(require("../../parser"));
14
+ var _parser = _interopRequireDefault(require("../../testsFiles/parser"));
15
15
 
16
16
  var _utils = require("../../../server/utils");
17
17
 
@@ -19,6 +19,10 @@ var _shared = require("../../../shared");
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
22
26
  async function loadStories(_config, {
23
27
  port
24
28
  }, storiesListener) {
@@ -54,16 +58,17 @@ async function loadStories(_config, {
54
58
  return stories;
55
59
  }
56
60
 
57
- function parseParams(config, listener) {
58
- if (!config.testDir) {
61
+ async function parseParams(config, listener) {
62
+ if (!config.testsDir) {
59
63
  return Promise.resolve({});
60
64
  }
61
65
 
62
- const testFiles = (0, _utils.readDirRecursive)(config.testDir).filter(file => {
63
- var _config$testRegex;
66
+ const testFiles = (0, _utils.readDirRecursive)(config.testsDir).filter(file => {
67
+ var _config$testsRegex;
64
68
 
65
- return (_config$testRegex = config.testRegex) === null || _config$testRegex === void 0 ? void 0 : _config$testRegex.test(file);
69
+ return (_config$testsRegex = config.testsRegex) === null || _config$testsRegex === void 0 ? void 0 : _config$testsRegex.test(file);
66
70
  });
71
+ await (await Promise.resolve().then(() => _interopRequireWildcard(require('../../testsFiles/register')))).default(config);
67
72
 
68
73
  if (listener) {
69
74
  _chokidar.default.watch(testFiles).on('change', filePath => {
@@ -13,20 +13,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
14
 
15
15
  async function parse(files) {
16
- result = {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
17
-
18
- (await Promise.resolve().then(() => _interopRequireWildcard(require('@babel/register')))).default({
19
- babelrc: false,
20
- rootMode: 'upward-optional',
21
- ignore: [/node_modules/],
22
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
23
- plugins: [['@babel/plugin-transform-runtime']],
24
- presets: ['@babel/preset-typescript', ['@babel/preset-env', {
25
- targets: {
26
- node: '10'
27
- }
28
- }]]
29
- });
16
+ result = {};
30
17
  await Promise.all(files.map(async file => Promise.resolve(`${file}`).then(s => _interopRequireWildcard(require(s)))));
31
18
  return result;
32
19
  }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = register;
7
+
8
+ var _pirates = require("pirates");
9
+
10
+ var _getTsconfig = require("get-tsconfig");
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ async function register(config) {
17
+ (0, _pirates.addHook)(() => '', {
18
+ exts: ['.jpg', '.jpeg', '.png', '.gif', '.eot', '.otf', '.svg', '.ttf', '.woff', '.woff2', '.css', '.less', '.scss', '.styl'],
19
+ ignoreNodeModules: false
20
+ });
21
+ const {
22
+ path: tsConfigPath
23
+ } = (0, _getTsconfig.getTsconfig)(config.tsConfig) || {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
24
+
25
+ (await Promise.resolve().then(() => _interopRequireWildcard(require('@babel/register')))).default(config.babelOptions({
26
+ babelrc: false,
27
+ rootMode: 'upward-optional',
28
+ ignore: [/node_modules/],
29
+ extensions: ['.js', '.jsx', '.ts', '.tsx'],
30
+ parserOpts: {
31
+ sourceType: 'module',
32
+ plugins: ['jsx', 'typescript']
33
+ },
34
+ presets: ['@babel/preset-typescript', ['@babel/preset-env', {
35
+ targets: {
36
+ node: '10'
37
+ },
38
+ modules: 'commonjs'
39
+ }]],
40
+ plugins: [['@babel/plugin-transform-runtime'], ['babel-plugin-tsconfig-paths', {
41
+ tsconfig: tsConfigPath
42
+ }]]
43
+ }));
44
+ (await Promise.resolve().then(() => _interopRequireWildcard(require('ts-node')))).register({
45
+ project: tsConfigPath,
46
+ transpileOnly: true
47
+ });
48
+ }
package/lib/cjs/shared.js CHANGED
@@ -7,23 +7,37 @@ exports.deserializeStory = exports.deserializeRawStories = exports.serializeRawS
7
7
 
8
8
  var _lodash = require("lodash");
9
9
 
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
+
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17
+
10
18
  // NOTE: Copy-paste from storybook/api
11
- const combineParameters = (...parameterSets) => // eslint-disable-next-line @typescript-eslint/no-unsafe-return
12
- (0, _lodash.mergeWith)({}, ...parameterSets, (_, srcValue) => {
13
- // Treat arrays as scalars:
14
- if (Array.isArray(srcValue)) return srcValue;
15
- return undefined;
16
- }); // NOTE: Copy-paste from storybook/api
19
+ var combineParameters = function combineParameters() {
20
+ for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
21
+ parameterSets[_key] = arguments[_key];
22
+ }
23
+
24
+ return (// eslint-disable-next-line @typescript-eslint/no-unsafe-return
25
+ _lodash.mergeWith.apply(void 0, [{}].concat(parameterSets, [function (_, srcValue) {
26
+ // Treat arrays as scalars:
27
+ if (Array.isArray(srcValue)) return srcValue;
28
+ return undefined;
29
+ }]))
30
+ );
31
+ }; // NOTE: Copy-paste from storybook/api
17
32
 
18
33
 
19
34
  exports.combineParameters = combineParameters;
20
35
 
21
- const denormalizeStoryParameters = ({
22
- globalParameters,
23
- kindParameters,
24
- stories
25
- }) => {
26
- return (0, _lodash.mapValues)(stories, storyData => {
36
+ var denormalizeStoryParameters = function denormalizeStoryParameters(_ref) {
37
+ var globalParameters = _ref.globalParameters,
38
+ kindParameters = _ref.kindParameters,
39
+ stories = _ref.stories;
40
+ return (0, _lodash.mapValues)(stories, function (storyData) {
27
41
  var _globalParameters$cre, _kindParameters$story, _kindParameters$story2;
28
42
 
29
43
  storyData.parameters.creevey = combineParameters((_globalParameters$cre = globalParameters.creevey) !== null && _globalParameters$cre !== void 0 ? _globalParameters$cre : {}, (_kindParameters$story = (_kindParameters$story2 = kindParameters[storyData.kind]) === null || _kindParameters$story2 === void 0 ? void 0 : _kindParameters$story2.creevey) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters.creevey);
@@ -33,41 +47,38 @@ const denormalizeStoryParameters = ({
33
47
 
34
48
  exports.denormalizeStoryParameters = denormalizeStoryParameters;
35
49
 
36
- const isSerializedRegExp = exp => {
37
- return typeof exp === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
50
+ var isSerializedRegExp = function isSerializedRegExp(exp) {
51
+ return _typeof(exp) === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
38
52
  };
39
53
 
40
54
  exports.isSerializedRegExp = isSerializedRegExp;
41
55
 
42
- const serializeRegExp = exp => {
43
- const {
44
- source,
45
- flags
46
- } = exp;
56
+ var serializeRegExp = function serializeRegExp(exp) {
57
+ var source = exp.source,
58
+ flags = exp.flags;
47
59
  return {
48
60
  __regexp: true,
49
- source,
50
- flags
61
+ source: source,
62
+ flags: flags
51
63
  };
52
64
  };
53
65
 
54
66
  exports.serializeRegExp = serializeRegExp;
55
67
 
56
- const deserializeRegExp = ({
57
- source,
58
- flags
59
- }) => {
68
+ var deserializeRegExp = function deserializeRegExp(_ref2) {
69
+ var source = _ref2.source,
70
+ flags = _ref2.flags;
60
71
  return new RegExp(source, flags);
61
72
  };
62
73
 
63
74
  exports.deserializeRegExp = deserializeRegExp;
64
75
 
65
- const serializeRawStories = stories => {
66
- return (0, _lodash.mapValues)(stories, storyData => {
67
- const creevey = storyData.parameters.creevey;
76
+ var serializeRawStories = function serializeRawStories(stories) {
77
+ return (0, _lodash.mapValues)(stories, function (storyData) {
78
+ var creevey = storyData.parameters.creevey;
68
79
 
69
- if ((creevey === null || creevey === void 0 ? void 0 : creevey.skip) !== undefined) {
70
- creevey.skip = (0, _lodash.cloneDeepWith)(creevey.skip, value => {
80
+ if (creevey !== null && creevey !== void 0 && creevey.skip) {
81
+ creevey.skip = (0, _lodash.cloneDeepWith)(creevey.skip, function (value) {
71
82
  if (value instanceof RegExp) {
72
83
  return serializeRegExp(value);
73
84
  }
@@ -82,22 +93,28 @@ const serializeRawStories = stories => {
82
93
 
83
94
  exports.serializeRawStories = serializeRawStories;
84
95
 
85
- const deserializeRawStories = stories => {
96
+ var deserializeRawStories = function deserializeRawStories(stories) {
86
97
  return (0, _lodash.mapValues)(stories, deserializeStory);
87
98
  };
88
99
 
89
100
  exports.deserializeRawStories = deserializeRawStories;
90
101
 
91
- const deserializeStory = story => {
92
- const creevey = story.parameters.creevey;
93
-
94
- if ((creevey === null || creevey === void 0 ? void 0 : creevey.skip) !== undefined) {
95
- creevey.skip = (0, _lodash.cloneDeepWith)(creevey.skip, value => {
96
- if (isSerializedRegExp(value)) {
97
- return deserializeRegExp(value);
98
- }
99
-
100
- return undefined;
102
+ var deserializeStory = function deserializeStory(story) {
103
+ var creevey = story.parameters.creevey;
104
+
105
+ if (creevey !== null && creevey !== void 0 && creevey.skip) {
106
+ return _objectSpread(_objectSpread({}, story), {}, {
107
+ parameters: _objectSpread(_objectSpread({}, story.parameters), {}, {
108
+ creevey: _objectSpread(_objectSpread({}, creevey), {}, {
109
+ skip: (0, _lodash.cloneDeepWith)(creevey.skip, function (value) {
110
+ if (isSerializedRegExp(value)) {
111
+ return deserializeRegExp(value);
112
+ }
113
+
114
+ return undefined;
115
+ })
116
+ })
117
+ })
101
118
  });
102
119
  }
103
120
 
@@ -1,11 +1,3 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
6
-
7
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
-
9
1
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
10
2
 
11
3
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -26,7 +18,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
26
18
 
27
19
  import * as Events from '@storybook/core-events';
28
20
  import * as polyfill from 'event-source-polyfill';
29
- import { buildQueries, within } from '@storybook/testing-library';
21
+ // import { buildQueries, within } from '@storybook/testing-library';
30
22
  import { addons, makeDecorator } from '@storybook/addons';
31
23
  import { isObject, noop } from '../../types';
32
24
  import { denormalizeStoryParameters, serializeRawStories } from '../../shared';
@@ -418,37 +410,23 @@ export function withCreevey() {
418
410
  window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
419
411
  window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
420
412
  window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
421
- window.__CREEVEY_SET_READY_FOR_CAPTURE__ = noop;
413
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__ = noop; // const queryAllByQuery = (container: HTMLElement, query: string): HTMLElement[] =>
414
+ // [...container.querySelectorAll(query)].filter((e) => e instanceof HTMLElement) as HTMLElement[];
415
+ // const getMultipleError = (_: Element | null, query: string): string => `Found multiple elements by query: ${query}`;
416
+ // const getMissingError = (_: Element | null, query: string): string => `Unable to find an element by query: ${query}`;
417
+ // const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
418
+ // queryAllByQuery,
419
+ // getMultipleError,
420
+ // getMissingError,
421
+ // );
422
+ // const queries = {
423
+ // queryByQuery,
424
+ // getAllByQuery,
425
+ // getByQuery,
426
+ // findAllByQuery,
427
+ // findByQuery,
428
+ // };
422
429
 
423
- var queryAllByQuery = function queryAllByQuery(container, query) {
424
- return _toConsumableArray(container.querySelectorAll(query)).filter(function (e) {
425
- return e instanceof HTMLElement;
426
- });
427
- };
428
-
429
- var getMultipleError = function getMultipleError(_, query) {
430
- return "Found multiple elements by query: ".concat(query);
431
- };
432
-
433
- var getMissingError = function getMissingError(_, query) {
434
- return "Unable to find an element by query: ".concat(query);
435
- };
436
-
437
- var _buildQueries = buildQueries(queryAllByQuery, getMultipleError, getMissingError),
438
- _buildQueries2 = _slicedToArray(_buildQueries, 5),
439
- queryByQuery = _buildQueries2[0],
440
- getAllByQuery = _buildQueries2[1],
441
- getByQuery = _buildQueries2[2],
442
- findAllByQuery = _buildQueries2[3],
443
- findByQuery = _buildQueries2[4];
444
-
445
- var queries = {
446
- queryByQuery: queryByQuery,
447
- getAllByQuery: getAllByQuery,
448
- getByQuery: getByQuery,
449
- findAllByQuery: findAllByQuery,
450
- findByQuery: findByQuery
451
- };
452
430
  return makeDecorator({
453
431
  name: 'withCreevey',
454
432
  parameterName: 'creevey',
@@ -467,9 +445,8 @@ export function withCreevey() {
467
445
 
468
446
  case captureElement === null:
469
447
  return Promise.resolve(document.documentElement);
470
-
471
- case typeof captureElement == 'string':
472
- return within(context.canvasElement, queries).findByQuery(captureElement);
448
+ // case typeof captureElement == 'string':
449
+ // return within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
473
450
 
474
451
  case typeof captureElement == 'function':
475
452
  // TODO Define type for it
package/lib/esm/index.js CHANGED
@@ -4,4 +4,4 @@ export * from './types'; // export * from './client/addon/withCreevey';
4
4
  export { loadStories as browserStoriesProvider } from './server/storybook/providers/browser';
5
5
  export { loadStories as nodejsStoriesProvider } from './server/storybook/providers/nodejs';
6
6
  export { loadStories as hybridStoriesProvider } from './server/storybook/providers/hybrid';
7
- export * from './server/parser';
7
+ export * from './server/testsFiles/parser';
@@ -26,7 +26,7 @@ export const defaultConfig = {
26
26
  },
27
27
  hooks: {},
28
28
  babelOptions: _ => _,
29
- testRegex: /.creevey.(t|j)s$/
29
+ testsRegex: /\.creevey\.(t|j)s$/
30
30
  };
31
31
 
32
32
  function normalizeBrowserConfig(name, config) {
@@ -405,7 +405,7 @@ async function resolveCreeveyHost(browser, port) {
405
405
  return new Promise(function (resolve, reject) {
406
406
  setTimeout(reject, 10000); // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
407
407
 
408
- fetch('http://' + host + ':' + port + '/ping').then(resolve).catch(reject);
408
+ fetch('//' + host + ':' + port + '/ping').then(resolve).catch(reject);
409
409
  }).then(function (response) {
410
410
  return response.text();
411
411
  }).then(function (pong) {
@@ -1,7 +1,7 @@
1
1
  import chokidar from 'chokidar';
2
2
  import { loadStories as browserProvider } from './browser';
3
3
  import { logger } from '../../logger';
4
- import parse from '../../parser';
4
+ import parse from '../../testsFiles/parser';
5
5
  import { readDirRecursive } from '../../../server/utils';
6
6
  import { combineParameters } from '../../../shared';
7
7
  export async function loadStories(_config, {
@@ -39,16 +39,17 @@ export async function loadStories(_config, {
39
39
  return stories;
40
40
  }
41
41
 
42
- function parseParams(config, listener) {
43
- if (!config.testDir) {
42
+ async function parseParams(config, listener) {
43
+ if (!config.testsDir) {
44
44
  return Promise.resolve({});
45
45
  }
46
46
 
47
- const testFiles = readDirRecursive(config.testDir).filter(file => {
48
- var _config$testRegex;
47
+ const testFiles = readDirRecursive(config.testsDir).filter(file => {
48
+ var _config$testsRegex;
49
49
 
50
- return (_config$testRegex = config.testRegex) === null || _config$testRegex === void 0 ? void 0 : _config$testRegex.test(file);
50
+ return (_config$testsRegex = config.testsRegex) === null || _config$testsRegex === void 0 ? void 0 : _config$testsRegex.test(file);
51
51
  });
52
+ await (await import('../../testsFiles/register')).default(config);
52
53
 
53
54
  if (listener) {
54
55
  chokidar.watch(testFiles).on('change', filePath => {
@@ -1,19 +1,6 @@
1
1
  import { toId, storyNameFromExport } from '@storybook/csf';
2
2
  export default async function parse(files) {
3
- result = {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
4
-
5
- (await import('@babel/register')).default({
6
- babelrc: false,
7
- rootMode: 'upward-optional',
8
- ignore: [/node_modules/],
9
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
10
- plugins: [['@babel/plugin-transform-runtime']],
11
- presets: ['@babel/preset-typescript', ['@babel/preset-env', {
12
- targets: {
13
- node: '10'
14
- }
15
- }]]
16
- });
3
+ result = {};
17
4
  await Promise.all(files.map(async file => import(file)));
18
5
  return result;
19
6
  }
@@ -0,0 +1,35 @@
1
+ import { addHook } from 'pirates';
2
+ import { getTsconfig } from 'get-tsconfig';
3
+ export default async function register(config) {
4
+ addHook(() => '', {
5
+ exts: ['.jpg', '.jpeg', '.png', '.gif', '.eot', '.otf', '.svg', '.ttf', '.woff', '.woff2', '.css', '.less', '.scss', '.styl'],
6
+ ignoreNodeModules: false
7
+ });
8
+ const {
9
+ path: tsConfigPath
10
+ } = getTsconfig(config.tsConfig) || {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
11
+
12
+ (await import('@babel/register')).default(config.babelOptions({
13
+ babelrc: false,
14
+ rootMode: 'upward-optional',
15
+ ignore: [/node_modules/],
16
+ extensions: ['.js', '.jsx', '.ts', '.tsx'],
17
+ parserOpts: {
18
+ sourceType: 'module',
19
+ plugins: ['jsx', 'typescript']
20
+ },
21
+ presets: ['@babel/preset-typescript', ['@babel/preset-env', {
22
+ targets: {
23
+ node: '10'
24
+ },
25
+ modules: 'commonjs'
26
+ }]],
27
+ plugins: [['@babel/plugin-transform-runtime'], ['babel-plugin-tsconfig-paths', {
28
+ tsconfig: tsConfigPath
29
+ }]]
30
+ }));
31
+ (await import('ts-node')).register({
32
+ project: tsConfigPath,
33
+ transpileOnly: true
34
+ });
35
+ }
package/lib/esm/shared.js CHANGED
@@ -1,50 +1,61 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
7
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8
+
1
9
  import { mapValues, mergeWith, cloneDeepWith } from 'lodash';
2
10
  // NOTE: Copy-paste from storybook/api
3
- export const combineParameters = (...parameterSets) => // eslint-disable-next-line @typescript-eslint/no-unsafe-return
4
- mergeWith({}, ...parameterSets, (_, srcValue) => {
5
- // Treat arrays as scalars:
6
- if (Array.isArray(srcValue)) return srcValue;
7
- return undefined;
8
- }); // NOTE: Copy-paste from storybook/api
11
+ export var combineParameters = function combineParameters() {
12
+ for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
13
+ parameterSets[_key] = arguments[_key];
14
+ }
15
+
16
+ return (// eslint-disable-next-line @typescript-eslint/no-unsafe-return
17
+ mergeWith.apply(void 0, [{}].concat(parameterSets, [function (_, srcValue) {
18
+ // Treat arrays as scalars:
19
+ if (Array.isArray(srcValue)) return srcValue;
20
+ return undefined;
21
+ }]))
22
+ );
23
+ }; // NOTE: Copy-paste from storybook/api
9
24
 
10
- export const denormalizeStoryParameters = ({
11
- globalParameters,
12
- kindParameters,
13
- stories
14
- }) => {
15
- return mapValues(stories, storyData => {
25
+ export var denormalizeStoryParameters = function denormalizeStoryParameters(_ref) {
26
+ var globalParameters = _ref.globalParameters,
27
+ kindParameters = _ref.kindParameters,
28
+ stories = _ref.stories;
29
+ return mapValues(stories, function (storyData) {
16
30
  var _globalParameters$cre, _kindParameters$story, _kindParameters$story2;
17
31
 
18
32
  storyData.parameters.creevey = combineParameters((_globalParameters$cre = globalParameters.creevey) !== null && _globalParameters$cre !== void 0 ? _globalParameters$cre : {}, (_kindParameters$story = (_kindParameters$story2 = kindParameters[storyData.kind]) === null || _kindParameters$story2 === void 0 ? void 0 : _kindParameters$story2.creevey) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters.creevey);
19
33
  return storyData;
20
34
  });
21
35
  };
22
- export const isSerializedRegExp = exp => {
23
- return typeof exp === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
36
+ export var isSerializedRegExp = function isSerializedRegExp(exp) {
37
+ return _typeof(exp) === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
24
38
  };
25
- export const serializeRegExp = exp => {
26
- const {
27
- source,
28
- flags
29
- } = exp;
39
+ export var serializeRegExp = function serializeRegExp(exp) {
40
+ var source = exp.source,
41
+ flags = exp.flags;
30
42
  return {
31
43
  __regexp: true,
32
- source,
33
- flags
44
+ source: source,
45
+ flags: flags
34
46
  };
35
47
  };
36
- export const deserializeRegExp = ({
37
- source,
38
- flags
39
- }) => {
48
+ export var deserializeRegExp = function deserializeRegExp(_ref2) {
49
+ var source = _ref2.source,
50
+ flags = _ref2.flags;
40
51
  return new RegExp(source, flags);
41
52
  };
42
- export const serializeRawStories = stories => {
43
- return mapValues(stories, storyData => {
44
- const creevey = storyData.parameters.creevey;
53
+ export var serializeRawStories = function serializeRawStories(stories) {
54
+ return mapValues(stories, function (storyData) {
55
+ var creevey = storyData.parameters.creevey;
45
56
 
46
- if ((creevey === null || creevey === void 0 ? void 0 : creevey.skip) !== undefined) {
47
- creevey.skip = cloneDeepWith(creevey.skip, value => {
57
+ if (creevey !== null && creevey !== void 0 && creevey.skip) {
58
+ creevey.skip = cloneDeepWith(creevey.skip, function (value) {
48
59
  if (value instanceof RegExp) {
49
60
  return serializeRegExp(value);
50
61
  }
@@ -56,19 +67,25 @@ export const serializeRawStories = stories => {
56
67
  return storyData;
57
68
  });
58
69
  };
59
- export const deserializeRawStories = stories => {
70
+ export var deserializeRawStories = function deserializeRawStories(stories) {
60
71
  return mapValues(stories, deserializeStory);
61
72
  };
62
- export const deserializeStory = story => {
63
- const creevey = story.parameters.creevey;
73
+ export var deserializeStory = function deserializeStory(story) {
74
+ var creevey = story.parameters.creevey;
64
75
 
65
- if ((creevey === null || creevey === void 0 ? void 0 : creevey.skip) !== undefined) {
66
- creevey.skip = cloneDeepWith(creevey.skip, value => {
67
- if (isSerializedRegExp(value)) {
68
- return deserializeRegExp(value);
69
- }
76
+ if (creevey !== null && creevey !== void 0 && creevey.skip) {
77
+ return _objectSpread(_objectSpread({}, story), {}, {
78
+ parameters: _objectSpread(_objectSpread({}, story.parameters), {}, {
79
+ creevey: _objectSpread(_objectSpread({}, creevey), {}, {
80
+ skip: cloneDeepWith(creevey.skip, function (value) {
81
+ if (isSerializedRegExp(value)) {
82
+ return deserializeRegExp(value);
83
+ }
70
84
 
71
- return undefined;
85
+ return undefined;
86
+ })
87
+ })
88
+ })
72
89
  });
73
90
  }
74
91
 
@@ -1,4 +1,3 @@
1
1
  /// <reference types="../../types/chai" />
2
2
  export * from './types';
3
3
  // export * from './client/addon/withCreevey';
4
- export * from './server/parser';
@@ -1,4 +1,4 @@
1
1
  import { Config, Options } from '../types';
2
2
  export declare const defaultBrowser = "chrome";
3
- export declare const defaultConfig: Omit<Config, 'gridUrl' | 'storiesProvider' | 'testDir'>;
3
+ export declare const defaultConfig: Omit<Config, 'gridUrl' | 'storiesProvider' | 'testsDir' | 'tsConfig'>;
4
4
  export declare function readConfig(options: Options): Promise<Config>;
@@ -1,4 +1,3 @@
1
- /// <reference types="webpack-env" />
2
1
  /// <reference types="node" />
3
2
  import cluster from 'cluster';
4
3
  import { WorkerMessage, StoriesMessage, TestMessage, WebpackMessage, DockerMessage, WorkerHandler, StoriesHandler, TestHandler, WebpackHandler, DockerHandler, ShutdownHandler } from '../types';
@@ -1,4 +1,4 @@
1
- import { CreeveyStoryParams, CreeveyTestFunction } from '../types';
1
+ import { CreeveyStoryParams, CreeveyTestFunction } from '../../types';
2
2
  export declare type CreeveyParamsByStoryId = {
3
3
  [storyId: string]: CreeveyStoryParams;
4
4
  };
@@ -0,0 +1,2 @@
1
+ import { Config } from '../../types';
2
+ export default function register(config: Config): Promise<void>;
@@ -246,8 +246,9 @@ export interface Config {
246
246
  * Specify platform for docker images
247
247
  */
248
248
  dockerImagePlatform: string;
249
- testRegex?: RegExp;
250
- testDir?: string;
249
+ testsRegex?: RegExp;
250
+ testsDir?: string;
251
+ tsConfig?: string;
251
252
  }
252
253
  export declare type CreeveyConfig = Partial<Config>;
253
254
  export interface Options {
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "addon",
14
14
  "test"
15
15
  ],
16
- "version": "0.9.0-beta.0",
16
+ "version": "0.9.0-beta.2",
17
17
  "bin": {
18
18
  "creevey": "./lib/cjs/cli.js"
19
19
  },
@@ -75,6 +75,7 @@
75
75
  "@babel/parser": "^7.15.3",
76
76
  "@babel/plugin-transform-runtime": "^7.15.0",
77
77
  "@babel/preset-env": "^7.15.0",
78
+ "@babel/preset-typescript": "^7.15.0",
78
79
  "@babel/register": "^7.15.3",
79
80
  "@babel/runtime-corejs3": "^7.15.3",
80
81
  "@babel/traverse": "^7.15.0",
@@ -88,6 +89,7 @@
88
89
  "@types/chai": "^4.2.15",
89
90
  "@types/selenium-webdriver": "^4.0.12",
90
91
  "airbnb-js-shims": "^2.2.1",
92
+ "babel-plugin-tsconfig-paths": "^1.0.3",
91
93
  "chai": "^4.3.4",
92
94
  "chalk": "^4.1.2",
93
95
  "chokidar": "^3.5.1",
@@ -95,6 +97,7 @@
95
97
  "dockerode": "^3.2.1",
96
98
  "event-source-polyfill": "1.0.25",
97
99
  "find-cache-dir": "^3.3.1",
100
+ "get-tsconfig": "^4.2.0",
98
101
  "global-jsdom": "8.3.0",
99
102
  "jsdom": "^16.5.2",
100
103
  "koa": "^2.13.1",
@@ -120,6 +123,7 @@
120
123
  "schema-utils": "^3.0.0",
121
124
  "selenium-webdriver": "^4.0.0-beta.3",
122
125
  "shelljs": "^0.8.4",
126
+ "ts-node": "^10.9.1",
123
127
  "tsconfig-paths": "^3.11.0",
124
128
  "webpack-node-externals": "^3.0.0",
125
129
  "ws": "^7.4.6"
@@ -129,7 +133,6 @@
129
133
  "@babel/core": "^7.15.0",
130
134
  "@babel/plugin-proposal-class-properties": "^7.13.0",
131
135
  "@babel/preset-react": "^7.13.13",
132
- "@babel/preset-typescript": "^7.15.0",
133
136
  "@mdx-js/mdx": "^1.6.22",
134
137
  "@storybook/addon-essentials": "^6.4.19",
135
138
  "@storybook/addon-postcss": "^2.0.0",