creevey 0.8.1-beta.0 → 0.8.1

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.8.1](https://github.com/wKich/creevey/compare/v0.8.1-beta.1...v0.8.1) (2023-05-29)
2
+
3
+ ## [0.8.1-beta.1](https://github.com/wKich/creevey/compare/v0.8.1-beta.0...v0.8.1-beta.1) (2023-05-05)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **providers:** set creevey port for all providers ([79e8aae](https://github.com/wKich/creevey/commit/79e8aae629d79260f93a93057486bab659801a46))
8
+
1
9
  ## [0.8.1-beta.0](https://github.com/wKich/creevey/compare/v0.8.0...v0.8.1-beta.0) (2023-04-11)
2
10
 
3
11
  ### Bug Fixes
@@ -429,21 +429,18 @@ async function resolveCreeveyHost(browser, port) {
429
429
  return creeveyServerHost;
430
430
  }
431
431
 
432
- async function loadStoriesFromBrowser(port) {
432
+ async function loadStoriesFromBrowser() {
433
433
  if (!browser) throw new Error("Can't get stories from browser if webdriver isn't connected");
434
- const host = await resolveCreeveyHost(browser, port);
435
- const stories = await browser.executeAsyncScript(function (creeveyHost, creeveyPort, callback) {
436
- window.__CREEVEY_SERVER_HOST__ = creeveyHost;
437
- window.__CREEVEY_SERVER_PORT__ = creeveyPort;
434
+ const stories = await browser.executeAsyncScript(function (callback) {
438
435
  void window.__CREEVEY_GET_STORIES__().then(callback);
439
- }, host, port);
436
+ });
440
437
  if (!stories) throw new Error("Can't get stories, it seems creevey or storybook API isn't available");
441
438
  return stories;
442
439
  }
443
440
 
444
- async function getBrowser(config, name) {
441
+ async function getBrowser(config, options) {
445
442
  if (browser) return browser;
446
- browserName = name;
443
+ browserName = options.browser;
447
444
  const browserConfig = config.browsers[browserName];
448
445
  const {
449
446
  gridUrl = config.gridUrl,
@@ -473,7 +470,7 @@ async function getBrowser(config, name) {
473
470
  const url = new URL(gridUrl);
474
471
  url.username = url.username ? '********' : '';
475
472
  url.password = url.password ? '********' : '';
476
- browserLogger.debug(`(${name}) Connecting to Selenium ${_chalk.default.magenta(url.toString())}`);
473
+ browserLogger.debug(`(${browserName}) Connecting to Selenium ${_chalk.default.magenta(url.toString())}`);
477
474
  browser = await new _seleniumWebdriver.Builder().usingServer(gridUrl).withCapabilities(capabilities).build();
478
475
  const sessionId = (_await$browser$getSes = await browser.getSession()) === null || _await$browser$getSes === void 0 ? void 0 : _await$browser$getSes.getId();
479
476
  let browserHost = '';
@@ -487,14 +484,14 @@ async function getBrowser(config, name) {
487
484
  /* noop */
488
485
  }
489
486
 
490
- browserLogger.debug(`(${name}) Connected successful with ${[_chalk.default.green(browserHost), _chalk.default.magenta(sessionId)].filter(Boolean).join(':')}`);
487
+ browserLogger.debug(`(${browserName}) Connected successful with ${[_chalk.default.green(browserHost), _chalk.default.magenta(sessionId)].filter(Boolean).join(':')}`);
491
488
  browserLogger = (0, _loglevel.getLogger)(sessionId);
492
489
 
493
490
  _loglevelPluginPrefix.default.apply(browserLogger, {
494
491
  format(level) {
495
492
  const levelColor = _logger.colors[level.toUpperCase()];
496
493
 
497
- return `[${name}:${_chalk.default.gray(sessionId)}] ${levelColor(level)} =>`;
494
+ return `[${browserName}:${_chalk.default.gray(sessionId)}] ${levelColor(level)} =>`;
498
495
  }
499
496
 
500
497
  });
@@ -528,9 +525,12 @@ async function getBrowser(config, name) {
528
525
  await updateStorybookGlobals(browser, _storybookGlobals);
529
526
  }
530
527
 
531
- await browser.executeScript(function (workerId) {
528
+ const creeveyHost = await resolveCreeveyHost(browser, options.port);
529
+ await browser.executeScript(function (workerId, creeveyHost, creeveyPort) {
532
530
  window.__CREEVEY_WORKER_ID__ = workerId;
533
- }, process.pid);
531
+ window.__CREEVEY_SERVER_HOST__ = creeveyHost;
532
+ window.__CREEVEY_SERVER_PORT__ = creeveyPort;
533
+ }, process.pid, creeveyHost, options.port);
534
534
  return browser;
535
535
  }
536
536
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.loadStories = loadStories;
6
+ exports.loadStories = void 0;
7
7
 
8
8
  var _cluster = _interopRequireDefault(require("cluster"));
9
9
 
@@ -17,9 +17,7 @@ var _logger = require("../../logger");
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
- async function loadStories(_config, {
21
- port
22
- }, storiesListener) {
20
+ const loadStories = async (_config, _options, storiesListener) => {
23
21
  if (_cluster.default.isPrimary) {
24
22
  return new Promise(resolve => {
25
23
  const worker = Object.values(_cluster.default.workers ?? {}).filter(_types.isDefined).find(worker => worker.isConnected());
@@ -57,7 +55,7 @@ async function loadStories(_config, {
57
55
  });
58
56
  if (message.type == 'update') storiesListener(new Map(message.payload));
59
57
  });
60
- const stories = await (0, _selenium.loadStoriesFromBrowser)(port);
58
+ const stories = await (0, _selenium.loadStoriesFromBrowser)();
61
59
  const storiesWithOldTests = [];
62
60
  Object.values(stories).forEach(story => {
63
61
  var _parameters, _parameters$creevey;
@@ -71,4 +69,6 @@ async function loadStories(_config, {
71
69
  });
72
70
  return stories;
73
71
  }
74
- }
72
+ };
73
+
74
+ exports.loadStories = loadStories;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.extractStoriesData = extractStoriesData;
7
- exports.loadStories = loadStories;
7
+ exports.loadStories = void 0;
8
8
 
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
 
@@ -189,10 +189,10 @@ async function loadStoriesDirectly(config, {
189
189
  } // TODO Do we need to support multiple storybooks here?
190
190
 
191
191
 
192
- async function loadStories(config, {
192
+ const loadStories = async (config, {
193
193
  watch,
194
194
  debug
195
- }, storiesListener) {
195
+ }, storiesListener) => {
196
196
  const storybookApi = await initStorybookEnvironment();
197
197
  const Events = await (0, _helpers.importStorybookCoreEvents)();
198
198
  const {
@@ -217,7 +217,9 @@ async function loadStories(config, {
217
217
  debug
218
218
  });
219
219
  return loadPromise;
220
- }
220
+ };
221
+
222
+ exports.loadStories = loadStories;
221
223
 
222
224
  async function extractStoriesData(config, {
223
225
  watch,
@@ -194,7 +194,7 @@ async function worker(config, options) {
194
194
 
195
195
  _chai.default.use((0, _chaiImage.default)(getExpected, config.diffOptions));
196
196
 
197
- if ((await (0, _selenium.getBrowser)(config, options.browser)) == null) return;
197
+ if ((await (0, _selenium.getBrowser)(config, options)) == null) return;
198
198
  await (0, _helpers.addTestsFromStories)(mocha.suite, config, {
199
199
  browser: options.browser,
200
200
  watch: options.ui,
@@ -205,12 +205,12 @@ async function worker(config, options) {
205
205
  try {
206
206
  var _await$getBrowser;
207
207
 
208
- await ((_await$getBrowser = await (0, _selenium.getBrowser)(config, options.browser)) === null || _await$getBrowser === void 0 ? void 0 : _await$getBrowser.getCurrentUrl());
208
+ await ((_await$getBrowser = await (0, _selenium.getBrowser)(config, options)) === null || _await$getBrowser === void 0 ? void 0 : _await$getBrowser.getCurrentUrl());
209
209
  } catch (_) {
210
210
  await (0, _selenium.closeBrowser)();
211
211
  }
212
212
 
213
- const browser = await (0, _selenium.getBrowser)(config, options.browser);
213
+ const browser = await (0, _selenium.getBrowser)(config, options);
214
214
  const sessionId = (_await$browser$getSes = await (browser === null || browser === void 0 ? void 0 : browser.getSession())) === null || _await$browser$getSes === void 0 ? void 0 : _await$browser$getSes.getId();
215
215
  if (browser == null) return;
216
216
  const interval = setInterval(() => void browser.getCurrentUrl().then(url => {
@@ -401,20 +401,17 @@ async function resolveCreeveyHost(browser, port) {
401
401
  return creeveyServerHost;
402
402
  }
403
403
 
404
- export async function loadStoriesFromBrowser(port) {
404
+ export async function loadStoriesFromBrowser() {
405
405
  if (!browser) throw new Error("Can't get stories from browser if webdriver isn't connected");
406
- const host = await resolveCreeveyHost(browser, port);
407
- const stories = await browser.executeAsyncScript(function (creeveyHost, creeveyPort, callback) {
408
- window.__CREEVEY_SERVER_HOST__ = creeveyHost;
409
- window.__CREEVEY_SERVER_PORT__ = creeveyPort;
406
+ const stories = await browser.executeAsyncScript(function (callback) {
410
407
  void window.__CREEVEY_GET_STORIES__().then(callback);
411
- }, host, port);
408
+ });
412
409
  if (!stories) throw new Error("Can't get stories, it seems creevey or storybook API isn't available");
413
410
  return stories;
414
411
  }
415
- export async function getBrowser(config, name) {
412
+ export async function getBrowser(config, options) {
416
413
  if (browser) return browser;
417
- browserName = name;
414
+ browserName = options.browser;
418
415
  const browserConfig = config.browsers[browserName];
419
416
  const {
420
417
  gridUrl = config.gridUrl,
@@ -444,7 +441,7 @@ export async function getBrowser(config, name) {
444
441
  const url = new URL(gridUrl);
445
442
  url.username = url.username ? '********' : '';
446
443
  url.password = url.password ? '********' : '';
447
- browserLogger.debug(`(${name}) Connecting to Selenium ${chalk.magenta(url.toString())}`);
444
+ browserLogger.debug(`(${browserName}) Connecting to Selenium ${chalk.magenta(url.toString())}`);
448
445
  browser = await new Builder().usingServer(gridUrl).withCapabilities(capabilities).build();
449
446
  const sessionId = (_await$browser$getSes = await browser.getSession()) === null || _await$browser$getSes === void 0 ? void 0 : _await$browser$getSes.getId();
450
447
  let browserHost = '';
@@ -458,12 +455,12 @@ export async function getBrowser(config, name) {
458
455
  /* noop */
459
456
  }
460
457
 
461
- browserLogger.debug(`(${name}) Connected successful with ${[chalk.green(browserHost), chalk.magenta(sessionId)].filter(Boolean).join(':')}`);
458
+ browserLogger.debug(`(${browserName}) Connected successful with ${[chalk.green(browserHost), chalk.magenta(sessionId)].filter(Boolean).join(':')}`);
462
459
  browserLogger = getLogger(sessionId);
463
460
  prefix.apply(browserLogger, {
464
461
  format(level) {
465
462
  const levelColor = colors[level.toUpperCase()];
466
- return `[${name}:${chalk.gray(sessionId)}] ${levelColor(level)} =>`;
463
+ return `[${browserName}:${chalk.gray(sessionId)}] ${levelColor(level)} =>`;
467
464
  }
468
465
 
469
466
  });
@@ -496,9 +493,12 @@ export async function getBrowser(config, name) {
496
493
  await updateStorybookGlobals(browser, _storybookGlobals);
497
494
  }
498
495
 
499
- await browser.executeScript(function (workerId) {
496
+ const creeveyHost = await resolveCreeveyHost(browser, options.port);
497
+ await browser.executeScript(function (workerId, creeveyHost, creeveyPort) {
500
498
  window.__CREEVEY_WORKER_ID__ = workerId;
501
- }, process.pid);
499
+ window.__CREEVEY_SERVER_HOST__ = creeveyHost;
500
+ window.__CREEVEY_SERVER_PORT__ = creeveyPort;
501
+ }, process.pid, creeveyHost, options.port);
502
502
  return browser;
503
503
  }
504
504
 
@@ -3,9 +3,7 @@ import { loadStoriesFromBrowser } from '../../selenium';
3
3
  import { emitStoriesMessage, sendStoriesMessage, subscribeOn, subscribeOnWorker } from '../../messages';
4
4
  import { isDefined } from '../../../types';
5
5
  import { logger } from '../../logger';
6
- export async function loadStories(_config, {
7
- port
8
- }, storiesListener) {
6
+ export const loadStories = async (_config, _options, storiesListener) => {
9
7
  if (cluster.isPrimary) {
10
8
  return new Promise(resolve => {
11
9
  const worker = Object.values(cluster.workers ?? {}).filter(isDefined).find(worker => worker.isConnected());
@@ -43,7 +41,7 @@ export async function loadStories(_config, {
43
41
  });
44
42
  if (message.type == 'update') storiesListener(new Map(message.payload));
45
43
  });
46
- const stories = await loadStoriesFromBrowser(port);
44
+ const stories = await loadStoriesFromBrowser();
47
45
  const storiesWithOldTests = [];
48
46
  Object.values(stories).forEach(story => {
49
47
  var _parameters, _parameters$creevey;
@@ -57,4 +55,4 @@ export async function loadStories(_config, {
57
55
  });
58
56
  return stories;
59
57
  }
60
- }
58
+ };
@@ -169,10 +169,10 @@ async function loadStoriesDirectly(config, {
169
169
  } // TODO Do we need to support multiple storybooks here?
170
170
 
171
171
 
172
- export async function loadStories(config, {
172
+ export const loadStories = async (config, {
173
173
  watch,
174
174
  debug
175
- }, storiesListener) {
175
+ }, storiesListener) => {
176
176
  const storybookApi = await initStorybookEnvironment();
177
177
  const Events = await importStorybookCoreEvents();
178
178
  const {
@@ -197,7 +197,7 @@ export async function loadStories(config, {
197
197
  debug
198
198
  });
199
199
  return loadPromise;
200
- }
200
+ };
201
201
  export async function extractStoriesData(config, {
202
202
  watch,
203
203
  debug
@@ -166,7 +166,7 @@ export default async function worker(config, options) {
166
166
  const mocha = new Mocha(mochaOptions);
167
167
  mocha.cleanReferencesAfterRun(false);
168
168
  chai.use(chaiImage(getExpected, config.diffOptions));
169
- if ((await getBrowser(config, options.browser)) == null) return;
169
+ if ((await getBrowser(config, options)) == null) return;
170
170
  await addTestsFromStories(mocha.suite, config, {
171
171
  browser: options.browser,
172
172
  watch: options.ui,
@@ -177,12 +177,12 @@ export default async function worker(config, options) {
177
177
  try {
178
178
  var _await$getBrowser;
179
179
 
180
- await ((_await$getBrowser = await getBrowser(config, options.browser)) === null || _await$getBrowser === void 0 ? void 0 : _await$getBrowser.getCurrentUrl());
180
+ await ((_await$getBrowser = await getBrowser(config, options)) === null || _await$getBrowser === void 0 ? void 0 : _await$getBrowser.getCurrentUrl());
181
181
  } catch (_) {
182
182
  await closeBrowser();
183
183
  }
184
184
 
185
- const browser = await getBrowser(config, options.browser);
185
+ const browser = await getBrowser(config, options);
186
186
  const sessionId = (_await$browser$getSes = await (browser === null || browser === void 0 ? void 0 : browser.getSession())) === null || _await$browser$getSes === void 0 ? void 0 : _await$browser$getSes.getId();
187
187
  if (browser == null) return;
188
188
  const interval = setInterval(() => void browser.getCurrentUrl().then(url => {
@@ -1,6 +1,6 @@
1
1
  import { Context } from 'mocha';
2
2
  import { WebDriver } from 'selenium-webdriver';
3
- import { Config, StorybookGlobals, StoriesRaw } from '../../types';
3
+ import { Config, StorybookGlobals, StoriesRaw, Options } from '../../types';
4
4
  declare global {
5
5
  interface Window {
6
6
  __CREEVEY_RESTORE_SCROLL__?: () => void;
@@ -11,7 +11,9 @@ declare global {
11
11
  }
12
12
  export declare function takeScreenshot(browser: WebDriver, captureElement?: string | null, ignoreElements?: string | string[] | null): Promise<string>;
13
13
  export declare function updateStorybookGlobals(browser: WebDriver, globals: StorybookGlobals): Promise<void>;
14
- export declare function loadStoriesFromBrowser(port: number): Promise<StoriesRaw>;
15
- export declare function getBrowser(config: Config, name: string): Promise<WebDriver | null>;
14
+ export declare function loadStoriesFromBrowser(): Promise<StoriesRaw>;
15
+ export declare function getBrowser(config: Config, options: Options & {
16
+ browser: string;
17
+ }): Promise<WebDriver | null>;
16
18
  export declare function closeBrowser(): Promise<void>;
17
19
  export declare function switchStory(this: Context): Promise<void>;
@@ -1,4 +1,2 @@
1
- import type { Config, StoriesRaw, StoryInput } from '../../../types';
2
- export declare function loadStories(_config: Config, { port }: {
3
- port: number;
4
- }, storiesListener: (stories: Map<string, StoryInput[]>) => void): Promise<StoriesRaw>;
1
+ import type { StoriesProvider } from '../../../types';
2
+ export declare const loadStories: StoriesProvider;
@@ -1,8 +1,5 @@
1
- import type { StoryInput, SetStoriesData, Config, StoriesRaw } from '../../../types';
2
- export declare function loadStories(config: Config, { watch, debug }: {
3
- watch: boolean;
4
- debug: boolean;
5
- }, storiesListener: (stories: Map<string, StoryInput[]>) => void): Promise<StoriesRaw>;
1
+ import type { SetStoriesData, Config, StoriesProvider } from '../../../types';
2
+ export declare const loadStories: StoriesProvider;
6
3
  export declare function extractStoriesData(config: Config, { watch, debug }: {
7
4
  watch: boolean;
8
5
  debug: boolean;
@@ -209,11 +209,7 @@ export interface Config {
209
209
  * }
210
210
  * ```
211
211
  */
212
- storiesProvider: (config: Config, options: {
213
- watch: boolean;
214
- debug: boolean;
215
- port: number;
216
- }, storiesListener: (stories: Map<string, StoryInput[]>) => void) => Promise<StoriesRaw>;
212
+ storiesProvider: StoriesProvider;
217
213
  /**
218
214
  * Define custom babel options for load stories transformation
219
215
  */
@@ -248,6 +244,10 @@ export interface Config {
248
244
  */
249
245
  dockerImagePlatform: string;
250
246
  }
247
+ export declare type StoriesProvider = (config: Config, options: {
248
+ watch: boolean;
249
+ debug: boolean;
250
+ }, storiesListener: (stories: Map<string, StoryInput[]>) => void) => Promise<StoriesRaw>;
251
251
  export declare type CreeveyConfig = Partial<Config>;
252
252
  export interface Options {
253
253
  config?: string;
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "addon",
14
14
  "test"
15
15
  ],
16
- "version": "0.8.1-beta.0",
16
+ "version": "0.8.1",
17
17
  "bin": {
18
18
  "creevey": "./lib/cjs/cli.js"
19
19
  },