creevey 0.10.0-beta.0 → 0.10.0-beta.10

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.
Files changed (159) hide show
  1. package/dist/client/addon/components/Panel.js +2 -2
  2. package/dist/client/addon/components/Panel.js.map +1 -1
  3. package/dist/client/addon/controller.js +4 -5
  4. package/dist/client/addon/controller.js.map +1 -1
  5. package/dist/client/addon/withCreevey.js +18 -34
  6. package/dist/client/addon/withCreevey.js.map +1 -1
  7. package/dist/client/shared/components/ImagesView/SwapView.js +12 -0
  8. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  9. package/dist/client/shared/components/PageHeader/ImagePreview.js +1 -0
  10. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
  11. package/dist/client/shared/components/ResultsPage.js +23 -5
  12. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  13. package/dist/client/web/CreeveyApp.js +22 -6
  14. package/dist/client/web/CreeveyApp.js.map +1 -1
  15. package/dist/client/web/CreeveyContext.d.ts +5 -0
  16. package/dist/client/web/CreeveyContext.js +3 -0
  17. package/dist/client/web/CreeveyContext.js.map +1 -1
  18. package/dist/client/web/CreeveyView/SideBar/Search.js +2 -2
  19. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  20. package/dist/client/web/CreeveyView/SideBar/SideBar.js +1 -0
  21. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  22. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +49 -6
  23. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  24. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +1 -3
  25. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  26. package/dist/client/web/CreeveyView/SideBar/TestLink.js +1 -3
  27. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  28. package/dist/client/web/KeyboardEventsContext.d.ts +1 -8
  29. package/dist/client/web/KeyboardEventsContext.js +62 -57
  30. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  31. package/dist/client/web/assets/{index-DkmZfG9C.js → index-BE9CL5_G.js} +94 -94
  32. package/dist/client/web/index.html +1 -1
  33. package/dist/creevey.js +13 -5
  34. package/dist/creevey.js.map +1 -1
  35. package/dist/index.js +1 -5
  36. package/dist/index.js.map +1 -1
  37. package/dist/playwright.d.ts +2 -0
  38. package/dist/playwright.js +6 -0
  39. package/dist/playwright.js.map +1 -0
  40. package/dist/selenium.d.ts +2 -0
  41. package/dist/selenium.js +6 -0
  42. package/dist/selenium.js.map +1 -0
  43. package/dist/server/config.d.ts +1 -1
  44. package/dist/server/config.js +12 -5
  45. package/dist/server/config.js.map +1 -1
  46. package/dist/server/docker.js +2 -2
  47. package/dist/server/docker.js.map +1 -1
  48. package/dist/server/index.js +40 -4
  49. package/dist/server/index.js.map +1 -1
  50. package/dist/server/logger.d.ts +2 -1
  51. package/dist/server/logger.js +7 -3
  52. package/dist/server/logger.js.map +1 -1
  53. package/dist/server/master/api.js +1 -1
  54. package/dist/server/master/api.js.map +1 -1
  55. package/dist/server/master/pool.d.ts +3 -3
  56. package/dist/server/master/pool.js +10 -63
  57. package/dist/server/master/pool.js.map +1 -1
  58. package/dist/server/master/queue.d.ts +13 -0
  59. package/dist/server/master/queue.js +64 -0
  60. package/dist/server/master/queue.js.map +1 -0
  61. package/dist/server/master/runner.d.ts +1 -0
  62. package/dist/server/master/runner.js +4 -1
  63. package/dist/server/master/runner.js.map +1 -1
  64. package/dist/server/master/server.js +1 -1
  65. package/dist/server/master/server.js.map +1 -1
  66. package/dist/server/master/start.js +4 -4
  67. package/dist/server/master/start.js.map +1 -1
  68. package/dist/server/playwright/docker-file.js +12 -1
  69. package/dist/server/playwright/docker-file.js.map +1 -1
  70. package/dist/server/playwright/docker.d.ts +1 -1
  71. package/dist/server/playwright/docker.js +1 -6
  72. package/dist/server/playwright/docker.js.map +1 -1
  73. package/dist/server/playwright/internal.d.ts +2 -2
  74. package/dist/server/playwright/internal.js +56 -44
  75. package/dist/server/playwright/internal.js.map +1 -1
  76. package/dist/server/playwright/webdriver.d.ts +2 -1
  77. package/dist/server/playwright/webdriver.js +4 -1
  78. package/dist/server/playwright/webdriver.js.map +1 -1
  79. package/dist/server/providers/browser.js +2 -1
  80. package/dist/server/providers/browser.js.map +1 -1
  81. package/dist/server/providers/hybrid.js +1 -1
  82. package/dist/server/providers/hybrid.js.map +1 -1
  83. package/dist/server/reporter.js +4 -4
  84. package/dist/server/reporter.js.map +1 -1
  85. package/dist/server/selenium/internal.d.ts +3 -3
  86. package/dist/server/selenium/internal.js +126 -89
  87. package/dist/server/selenium/internal.js.map +1 -1
  88. package/dist/server/selenium/selenoid.js +2 -2
  89. package/dist/server/selenium/selenoid.js.map +1 -1
  90. package/dist/server/selenium/webdriver.d.ts +2 -1
  91. package/dist/server/selenium/webdriver.js +8 -1
  92. package/dist/server/selenium/webdriver.js.map +1 -1
  93. package/dist/server/telemetry.js +7 -3
  94. package/dist/server/telemetry.js.map +1 -1
  95. package/dist/server/utils.d.ts +2 -1
  96. package/dist/server/utils.js +13 -3
  97. package/dist/server/utils.js.map +1 -1
  98. package/dist/server/webdriver.d.ts +4 -4
  99. package/dist/server/webdriver.js +10 -9
  100. package/dist/server/webdriver.js.map +1 -1
  101. package/dist/server/worker/chai-image.d.ts +1 -2
  102. package/dist/server/worker/chai-image.js +4 -3
  103. package/dist/server/worker/chai-image.js.map +1 -1
  104. package/dist/server/worker/start.js +27 -39
  105. package/dist/server/worker/start.js.map +1 -1
  106. package/dist/types.d.ts +32 -21
  107. package/dist/types.js +13 -1
  108. package/dist/types.js.map +1 -1
  109. package/package.json +45 -38
  110. package/playwright.d.ts +2 -0
  111. package/selenium.d.ts +2 -0
  112. package/src/client/addon/components/Panel.tsx +2 -2
  113. package/src/client/addon/controller.ts +13 -6
  114. package/src/client/addon/withCreevey.ts +25 -13
  115. package/src/client/shared/components/ImagesView/SwapView.tsx +18 -0
  116. package/src/client/shared/components/PageHeader/ImagePreview.tsx +1 -0
  117. package/src/client/shared/components/ResultsPage.tsx +28 -7
  118. package/src/client/web/CreeveyApp.tsx +25 -7
  119. package/src/client/web/CreeveyContext.tsx +9 -0
  120. package/src/client/web/CreeveyView/SideBar/Search.tsx +3 -3
  121. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +1 -0
  122. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +37 -6
  123. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +3 -5
  124. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +2 -4
  125. package/src/client/web/KeyboardEventsContext.tsx +61 -73
  126. package/src/creevey.ts +13 -6
  127. package/src/index.ts +0 -2
  128. package/src/playwright.ts +1 -0
  129. package/src/selenium.ts +1 -0
  130. package/src/server/config.ts +19 -7
  131. package/src/server/docker.ts +2 -2
  132. package/src/server/index.ts +45 -4
  133. package/src/server/logger.ts +6 -2
  134. package/src/server/master/api.ts +1 -1
  135. package/src/server/master/pool.ts +18 -56
  136. package/src/server/master/queue.ts +64 -0
  137. package/src/server/master/runner.ts +4 -1
  138. package/src/server/master/server.ts +1 -1
  139. package/src/server/master/start.ts +7 -4
  140. package/src/server/playwright/docker-file.ts +14 -1
  141. package/src/server/playwright/docker.ts +2 -12
  142. package/src/server/playwright/internal.ts +76 -49
  143. package/src/server/playwright/webdriver.ts +7 -2
  144. package/src/server/providers/browser.ts +2 -1
  145. package/src/server/providers/hybrid.ts +1 -1
  146. package/src/server/reporter.ts +4 -3
  147. package/src/server/selenium/internal.ts +147 -93
  148. package/src/server/selenium/selenoid.ts +2 -2
  149. package/src/server/selenium/webdriver.ts +12 -2
  150. package/src/server/telemetry.ts +7 -3
  151. package/src/server/utils.ts +14 -4
  152. package/src/server/webdriver.ts +13 -15
  153. package/src/server/worker/chai-image.ts +4 -4
  154. package/src/server/worker/start.ts +29 -48
  155. package/src/types.ts +35 -23
  156. package/types/playwright-context.d.ts +7 -0
  157. package/types/selenium-context.d.ts +7 -0
  158. package/.yarnrc.yml +0 -1
  159. package/chromatic.config.json +0 -5
@@ -1,5 +1,5 @@
1
1
  import { Args } from '@storybook/csf';
2
- import { Config, Options, StoriesRaw, StoryInput } from '../../types';
2
+ import { Config, Options, ServerTest, StoriesRaw, StoryInput } from '../../types';
3
3
  import { CreeveyWebdriverBase } from '../webdriver';
4
4
  export declare class PlaywrightWebdriver extends CreeveyWebdriverBase {
5
5
  #private;
@@ -9,6 +9,7 @@ export declare class PlaywrightWebdriver extends CreeveyWebdriverBase {
9
9
  openBrowser(fresh?: boolean): Promise<PlaywrightWebdriver | null>;
10
10
  closeBrowser(): Promise<void>;
11
11
  loadStoriesFromBrowser(): Promise<StoriesRaw>;
12
+ afterTest(_test: ServerTest): Promise<void>;
12
13
  protected takeScreenshot(captureElement: string | null, ignoreElements?: string | string[] | null): Promise<Buffer>;
13
14
  protected waitForComplete(callback: (isCompleted: boolean) => void): void;
14
15
  protected selectStory(id: string, waitForReady?: boolean): Promise<boolean>;
@@ -46,7 +46,7 @@ class PlaywrightWebdriver extends webdriver_1.CreeveyWebdriverBase {
46
46
  return await import('./internal.js');
47
47
  }
48
48
  catch (error) {
49
- logger_1.logger.error(error);
49
+ (0, logger_1.logger)().error(error);
50
50
  return null;
51
51
  }
52
52
  })();
@@ -72,6 +72,9 @@ class PlaywrightWebdriver extends webdriver_1.CreeveyWebdriverBase {
72
72
  }
73
73
  return this.#browser.loadStoriesFromBrowser();
74
74
  }
75
+ afterTest(_test) {
76
+ return Promise.resolve(undefined);
77
+ }
75
78
  async takeScreenshot(captureElement, ignoreElements) {
76
79
  if (!this.#browser) {
77
80
  // TODO Describe the error
@@ -1 +1 @@
1
- {"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":";;;AAGA,sCAAmC;AACnC,0CAA0C;AAC1C,4CAAoD;AAGpD,MAAa,mBAAoB,SAAQ,gCAAoB;IAC3D,QAAQ,GAA2B,IAAI,CAAC;IACxC,YAAY,CAAS;IACrB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,QAAQ,CAAU;IAClB,YAAY,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,OAAgB;QAC5E,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,IAAA,sBAAW,EAAC,UAAU,EAAE,GAAG,EAAE;YAC3B,KAAK,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAChC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC;gBACH,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,eAAM,GAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhH,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,KAAiB;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,cAA6B,EAC7B,cAAyC;QAEzC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAES,eAAe,CAAC,QAAwC;QAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,YAAsB;QAC5D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,KAAiB,EAAE,WAAiB;QAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;CACF;AA1HD,kDA0HC"}
@@ -9,6 +9,7 @@ const messages_js_1 = require("../messages.js");
9
9
  const types_js_1 = require("../../types.js");
10
10
  const logger_js_1 = require("../logger.js");
11
11
  const index_js_1 = require("../../shared/index.js");
12
+ // TODO Don't have updates from stories
12
13
  const loadStories = async (_config, storiesListener, webdriver) => {
13
14
  if (cluster_1.default.isPrimary) {
14
15
  return new Promise((resolve) => {
@@ -20,7 +21,7 @@ const loadStories = async (_config, storiesListener, webdriver) => {
20
21
  if (message.type == 'set') {
21
22
  const { stories, oldTests } = message.payload;
22
23
  if (oldTests.length > 0)
23
- logger_js_1.logger.warn(`If you use browser stories provider of CSFv3 Storybook feature\n` +
24
+ (0, logger_js_1.logger)().warn(`If you use browser stories provider of CSFv3 Storybook feature\n` +
24
25
  `Creevey will not load tests defined in story parameters from following stories:\n` +
25
26
  oldTests.join('\n'));
26
27
  unsubscribe();
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/server/providers/browser.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,gDAAwG;AACxG,6CAA2C;AAC3C,4CAAsC;AACtC,oDAA8D;AAEvD,MAAM,WAAW,GAAoB,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;IACxF,IAAI,iBAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAO,CAAC,OAAO,IAAI,EAAE,CAAC;iBAChD,MAAM,CAAC,oBAAS,CAAC;iBACjB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAE1C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,IAAA,+BAAiB,EAAC,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBACnE,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;wBAC1B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;wBAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;4BACrB,kBAAM,CAAC,IAAI,CACT,kEAAkE;gCAChE,mFAAmF;gCACnF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;wBACJ,WAAW,EAAE,CAAC;wBACd,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAA,gCAAkB,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAA,yBAAW,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACjC,mCAAmC;gBACnC,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ;oBAAE,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,yBAAW,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK;gBACvB,IAAA,gCAAkB,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ;gBAAE,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,CAAC,MAAM,SAAS,EAAE,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzF,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAK,KAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACvD,OAAQ,KAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;gBAC1D,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB;AAEF,mBAAW,CAAC,YAAY,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/server/providers/browser.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,gDAAwG;AACxG,6CAA2C;AAC3C,4CAAsC;AACtC,oDAA8D;AAE9D,uCAAuC;AAChC,MAAM,WAAW,GAAoB,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;IACxF,IAAI,iBAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAO,CAAC,OAAO,IAAI,EAAE,CAAC;iBAChD,MAAM,CAAC,oBAAS,CAAC;iBACjB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAE1C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,IAAA,+BAAiB,EAAC,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBACnE,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;wBAC1B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;wBAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;4BACrB,IAAA,kBAAM,GAAE,CAAC,IAAI,CACX,kEAAkE;gCAChE,mFAAmF;gCACnF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;wBACJ,WAAW,EAAE,CAAC;wBACd,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAA,gCAAkB,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAA,yBAAW,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACjC,mCAAmC;gBACnC,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ;oBAAE,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,yBAAW,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK;gBACvB,IAAA,gCAAkB,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ;gBAAE,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,CAAC,MAAM,SAAS,EAAE,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzF,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAK,KAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACvD,OAAQ,KAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;gBAC1D,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB;AAEF,mBAAW,CAAC,YAAY,GAAG,SAAS,CAAC"}
@@ -45,7 +45,7 @@ async function parseParams(config, listener) {
45
45
  const testFiles = (0, utils_js_1.readDirRecursive)(config.testsDir).filter((file) => config.testsRegex?.test(file));
46
46
  if (listener) {
47
47
  chokidar_1.default.watch(testFiles).on('change', (filePath) => {
48
- logger_js_1.logger.debug(`changed: ${filePath}`);
48
+ (0, logger_js_1.logger)().debug(`changed: ${filePath}`);
49
49
  // doesn't work, always returns {} due modules caching
50
50
  // see https://github.com/nodejs/modules/issues/307
51
51
  void (0, parser_js_1.default)(testFiles).then((data) => {
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../../src/server/providers/hybrid.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,6CAA8D;AAE9D,4CAAsC;AACtC,wEAAwE;AACxE,0CAA+C;AAC/C,oDAA0D;AAEnD,MAAM,WAAW,GAAoB,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;IACvF,IAAI,sBAAsB,GAAoC,EAAE,CAAC;IAEjE,MAAM,2BAA2B,GAAG,CAAC,KAAmB,EAAE,aAAiC,EAAQ,EAAE;QACnG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,IAAA,4BAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAe,EACnC,MAAM,EACN,CAAC,qBAAqB,EAAE,EAAE;QACxB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE;YACvE,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7B,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,aAAa;oBAAE,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC,EACD,SAAS,CACV,CAAC;IAEF,oCAAoC;IACpC,sBAAsB,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAEtF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACnD,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,aAAa;YAAE,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAhCW,QAAA,WAAW,eAgCtB;AAEF,oCAAoC;AACpC,KAAK,UAAU,WAAW,CACxB,MAAc,EACd,QAAiD;IAEjD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpG,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YAClD,kBAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;YAErC,sDAAsD;YACtD,mDAAmD;YACnD,KAAK,IAAA,mBAAK,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,mBAAK,EAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,mBAAW,CAAC,YAAY,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../../src/server/providers/hybrid.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,6CAA8D;AAE9D,4CAAsC;AACtC,wEAAwE;AACxE,0CAA+C;AAC/C,oDAA0D;AAEnD,MAAM,WAAW,GAAoB,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;IACvF,IAAI,sBAAsB,GAAoC,EAAE,CAAC;IAEjE,MAAM,2BAA2B,GAAG,CAAC,KAAmB,EAAE,aAAiC,EAAQ,EAAE;QACnG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,IAAA,4BAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAe,EACnC,MAAM,EACN,CAAC,qBAAqB,EAAE,EAAE;QACxB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE;YACvE,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7B,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,aAAa;oBAAE,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC,EACD,SAAS,CACV,CAAC;IAEF,oCAAoC;IACpC,sBAAsB,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAEtF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACnD,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,aAAa;YAAE,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAhCW,QAAA,WAAW,eAgCtB;AAEF,oCAAoC;AACpC,KAAK,UAAU,WAAW,CACxB,MAAc,EACd,QAAiD;IAEjD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpG,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YAClD,IAAA,kBAAM,GAAE,CAAC,KAAK,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;YAEvC,sDAAsD;YACtD,mDAAmD;YACnD,KAAK,IAAA,mBAAK,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,mBAAK,EAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,mBAAW,CAAC,YAAY,GAAG,QAAQ,CAAC"}
@@ -17,20 +17,20 @@ class CreeveyReporter {
17
17
  // TODO Output in better way, like vitest, maybe
18
18
  constructor(runner, options) {
19
19
  const { sessionId, browserName } = options.reporterOptions.creevey;
20
- const testLogger = loglevel_1.default.getLogger(browserName);
20
+ const testLogger = loglevel_1.default.getLogger(sessionId);
21
21
  loglevel_plugin_prefix_1.default.apply(testLogger, {
22
22
  format(level) {
23
- return `${testLevels[level]} => (${browserName}:${chalk_1.default.gray(sessionId)})`;
23
+ return `[${browserName}:${chalk_1.default.gray(process.pid)}] ${testLevels[level]} => ${chalk_1.default.gray(sessionId)}`;
24
24
  },
25
25
  });
26
26
  runner.on(types_js_1.TEST_EVENTS.TEST_BEGIN, (test) => {
27
27
  testLogger.warn(chalk_1.default.cyan(test.titlePath().join('/')));
28
28
  });
29
29
  runner.on(types_js_1.TEST_EVENTS.TEST_PASS, (test) => {
30
- testLogger.info(chalk_1.default.cyan(test.titlePath().join('/')));
30
+ testLogger.info(chalk_1.default.cyan(test.titlePath().join('/')), chalk_1.default.gray(`(${test.duration} ms)`));
31
31
  });
32
32
  runner.on(types_js_1.TEST_EVENTS.TEST_FAIL, (test, error) => {
33
- testLogger.error(chalk_1.default.cyan(test.titlePath().join('/')), '\n ', this.getErrors(error, (error, imageName) => `${chalk_1.default.bold(imageName ?? browserName)}:${error}`, (error) => error.stack ?? error.message).join('\n '));
33
+ testLogger.error(chalk_1.default.cyan(test.titlePath().join('/')), chalk_1.default.gray(`(${test.duration} ms)`), '\n ', this.getErrors(error, (error, imageName) => `${chalk_1.default.bold(imageName ?? browserName)}:${error}`, (error) => error.stack ?? error.message).join('\n '));
34
34
  });
35
35
  }
36
36
  getErrors(error, imageErrorToString, errorToString) {
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/server/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/server/reporter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { Args } from '@storybook/csf';
2
- import Logger from 'loglevel';
3
2
  import { WebDriver } from 'selenium-webdriver';
4
- import { Config, StoryInput, StoriesRaw, Options } from '../../types.js';
3
+ import { Config, StorybookGlobals, StoryInput, StoriesRaw, Options, ServerTest } from '../../types.js';
5
4
  export declare class InternalBrowser {
6
5
  #private;
7
- constructor(browser: WebDriver, port: number, logger: Logger.Logger);
6
+ constructor(browser: WebDriver, port: number, storybookGlobals?: StorybookGlobals);
8
7
  get browser(): WebDriver;
9
8
  closeBrowser(): Promise<void>;
10
9
  takeScreenshot(captureElement?: string | null, ignoreElements?: string | string[] | null): Promise<Buffer>;
@@ -12,6 +11,7 @@ export declare class InternalBrowser {
12
11
  selectStory(id: string, waitForReady?: boolean): Promise<boolean>;
13
12
  updateStoryArgs(story: StoryInput, updatedArgs: Args): Promise<void>;
14
13
  loadStoriesFromBrowser(): Promise<StoriesRaw>;
14
+ afterTest(test: ServerTest): Promise<void>;
15
15
  static getBrowser(browserName: string, gridUrl: string, config: Config, options: Options): Promise<InternalBrowser | null>;
16
16
  private init;
17
17
  private openStorybookPage;
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.InternalBrowser = void 0;
7
- const core_events_1 = require("@storybook/core-events");
8
7
  const chalk_1 = __importDefault(require("chalk"));
9
8
  const http_1 = __importDefault(require("http"));
10
9
  const https_1 = __importDefault(require("https"));
@@ -59,15 +58,19 @@ async function openUrlAndWaitForPageSource(browser, url, predicate) {
59
58
  } while (predicate(source));
60
59
  return source;
61
60
  }
62
- async function buildWebdriver(browserName, gridUrl, config, options) {
63
- const browserConfig = config.browsers[browserName];
64
- const { _storybookGlobals, /*customizeBuilder,*/ ...userCapabilities } = browserConfig;
61
+ async function buildWebdriver(browser, gridUrl, config, options) {
62
+ const browserConfig = config.browsers[browser];
63
+ const { /*customizeBuilder,*/ seleniumCapabilities, browserName } = browserConfig;
65
64
  const url = new URL(gridUrl);
66
65
  url.username = url.username ? '********' : '';
67
66
  url.password = url.password ? '********' : '';
68
- logger_js_1.logger.debug(`(${browserName}) Connecting to Selenium ${chalk_1.default.magenta(url.toString())}`);
67
+ (0, logger_js_1.logger)().debug(`Connecting to Selenium ${chalk_1.default.magenta(url.toString())}`);
69
68
  // TODO Define some capabilities explicitly and define typings
70
- const capabilities = new selenium_webdriver_1.Capabilities({ ...userCapabilities, pageLoadStrategy: capabilities_js_1.PageLoadStrategy.EAGER });
69
+ const capabilities = new selenium_webdriver_1.Capabilities({
70
+ browserName,
71
+ ...seleniumCapabilities,
72
+ pageLoadStrategy: capabilities_js_1.PageLoadStrategy.EAGER,
73
+ });
71
74
  const prefs = new selenium_webdriver_1.logging.Preferences();
72
75
  if (options.trace) {
73
76
  for (const type of Object.values(selenium_webdriver_1.logging.Type)) {
@@ -77,47 +80,74 @@ async function buildWebdriver(browserName, gridUrl, config, options) {
77
80
  // TODO Fetch selenium grid capabilities
78
81
  // TODO Validate browsers, versions, and platform
79
82
  // TODO Use `customizeBuilder`
80
- let browser;
83
+ let webdriver;
81
84
  try {
82
- // const ie = new IeOptions();
83
- // const edge = new EdgeOptions();
84
- // const chrome = new ChromeOptions();
85
- // const safari = new SafariOptions();
86
- // const firefox = new FirefoxOptions();
87
- // edge.enableBidi();
88
- // chrome.enableBidi();
89
- // firefox.enableBidi();
90
- browser = await new selenium_webdriver_1.Builder()
91
- // .setIeOptions(ie)
92
- // .setEdgeOptions(edge)
93
- // .setChromeOptions(chrome)
94
- // .setSafariOptions(safari)
95
- // .setFirefoxOptions(firefox)
96
- .usingServer(gridUrl)
97
- .withCapabilities(capabilities)
98
- .setLoggingPrefs(prefs) // NOTE: Should go last
99
- .build();
100
- // const id = await browser.getWindowHandle();
101
- // context = await BrowsingContext(browser, { browsingContextId: id });
85
+ const maxRetries = 5;
86
+ let retries = 0;
87
+ do {
88
+ webdriver = await Promise.race([
89
+ new Promise((resolve) => {
90
+ setTimeout(() => {
91
+ retries += 1;
92
+ resolve(null);
93
+ }, 120_000);
94
+ }),
95
+ (async () => {
96
+ if (retries > 0) {
97
+ (0, logger_js_1.logger)().debug(`Trying to initialize session to Selenium Grid: retried ${retries} of ${maxRetries}`);
98
+ }
99
+ const retry = retries;
100
+ // const ie = new IeOptions();
101
+ // const edge = new EdgeOptions();
102
+ // const chrome = new ChromeOptions();
103
+ // const safari = new SafariOptions();
104
+ // const firefox = new FirefoxOptions();
105
+ // edge.enableBidi();
106
+ // chrome.enableBidi();
107
+ // firefox.enableBidi();
108
+ const driver = await new selenium_webdriver_1.Builder()
109
+ // .setIeOptions(ie)
110
+ // .setEdgeOptions(edge)
111
+ // .setChromeOptions(chrome)
112
+ // .setSafariOptions(safari)
113
+ // .setFirefoxOptions(firefox)
114
+ .usingServer(gridUrl)
115
+ .withCapabilities(capabilities)
116
+ .setLoggingPrefs(prefs) // NOTE: Should go last
117
+ .build();
118
+ // const id = await driver.getWindowHandle();
119
+ // context = await BrowsingContext(driver, { browsingContextId: id });
120
+ if (retry != retries) {
121
+ void driver.quit();
122
+ return null;
123
+ }
124
+ return driver;
125
+ })(),
126
+ ]);
127
+ if (webdriver)
128
+ break;
129
+ } while (retries < maxRetries);
130
+ if (!webdriver)
131
+ throw new Error('Failed to initialize session to Selenium Grid due to many retries');
102
132
  }
103
133
  catch (error) {
104
- logger_js_1.logger.error(`(${browserName}) Failed to start browser:`, error);
134
+ (0, logger_js_1.logger)().error(`Failed to start browser:`, error);
105
135
  return null;
106
136
  }
107
- return browser;
137
+ return webdriver;
108
138
  }
109
139
  class InternalBrowser {
110
140
  #isShuttingDown = false;
111
141
  #browser;
112
142
  #serverHost = null;
113
143
  #serverPort;
114
- #logger;
144
+ #storybookGlobals;
115
145
  #unsubscribe = types_js_1.noop;
116
146
  #keepAliveInterval = null;
117
- constructor(browser, port, logger) {
147
+ constructor(browser, port, storybookGlobals) {
118
148
  this.#browser = browser;
119
149
  this.#serverPort = port;
120
- this.#logger = logger;
150
+ this.#storybookGlobals = storybookGlobals;
121
151
  this.#unsubscribe = (0, messages_js_1.subscribeOn)('shutdown', () => {
122
152
  void this.closeBrowser();
123
153
  });
@@ -142,23 +172,23 @@ class InternalBrowser {
142
172
  async takeScreenshot(captureElement, ignoreElements) {
143
173
  let screenshot;
144
174
  const ignoreStyles = await this.insertIgnoreStyles(ignoreElements);
145
- if (this.#logger.getLevel() <= loglevel_1.default.levels.DEBUG) {
175
+ if ((0, logger_js_1.logger)().getLevel() <= loglevel_1.default.levels.DEBUG) {
146
176
  const { innerWidth, innerHeight } = await this.#browser.executeScript(function () {
147
177
  return {
148
178
  innerWidth: window.innerWidth,
149
179
  innerHeight: window.innerHeight,
150
180
  };
151
181
  });
152
- this.#logger.debug(`Viewport size is: ${innerWidth}x${innerHeight}`);
182
+ (0, logger_js_1.logger)().debug(`Viewport size is: ${innerWidth}x${innerHeight}`);
153
183
  }
154
184
  try {
155
185
  if (!captureElement) {
156
- this.#logger.debug('Capturing viewport screenshot');
186
+ (0, logger_js_1.logger)().debug('Capturing viewport screenshot');
157
187
  screenshot = await this.#browser.takeScreenshot();
158
- this.#logger.debug('Viewport screenshot is captured');
188
+ (0, logger_js_1.logger)().debug('Viewport screenshot is captured');
159
189
  }
160
190
  else {
161
- this.#logger.debug(`Checking is element ${chalk_1.default.cyan(captureElement)} fit into viewport`);
191
+ (0, logger_js_1.logger)().debug(`Checking is element ${chalk_1.default.cyan(captureElement)} fit into viewport`);
162
192
  const rects = await this.#browser.executeScript(function (selector) {
163
193
  window.scrollTo(0, 0); // TODO Maybe we should remove same code from `resetMousePosition`
164
194
  // eslint-disable-next-line no-var
@@ -191,10 +221,10 @@ class InternalBrowser {
191
221
  const isFitIntoViewport = elementRect.width + elementRect.left <= windowRect.width &&
192
222
  elementRect.height + elementRect.top <= windowRect.height;
193
223
  if (isFitIntoViewport) {
194
- this.#logger.debug(`Capturing ${chalk_1.default.cyan(captureElement)} with size: ${elementRect.width}x${elementRect.height}`);
224
+ (0, logger_js_1.logger)().debug(`Capturing ${chalk_1.default.cyan(captureElement)} with size: ${elementRect.width}x${elementRect.height}`);
195
225
  }
196
226
  else
197
- this.#logger.debug(`Capturing composite screenshot image of ${chalk_1.default.cyan(captureElement)} with size: ${elementRect.width}x${elementRect.height}`);
227
+ (0, logger_js_1.logger)().debug(`Capturing composite screenshot image of ${chalk_1.default.cyan(captureElement)} with size: ${elementRect.width}x${elementRect.height}`);
198
228
  // const element = await browser.findElement(By.css(captureElement));
199
229
  // screenshot = isFitIntoViewport
200
230
  // ? context
@@ -206,7 +236,7 @@ class InternalBrowser {
206
236
  ? await this.#browser.findElement(selenium_webdriver_1.By.css(captureElement)).takeScreenshot()
207
237
  : // TODO pointer-events: none, need to research
208
238
  await this.takeCompositeScreenshot(windowRect, elementRect);
209
- this.#logger.debug(`${chalk_1.default.cyan(captureElement)} is captured`);
239
+ (0, logger_js_1.logger)().debug(`${chalk_1.default.cyan(captureElement)} is captured`);
210
240
  }
211
241
  }
212
242
  finally {
@@ -223,9 +253,10 @@ class InternalBrowser {
223
253
  }
224
254
  async selectStory(id, waitForReady = false) {
225
255
  // NOTE: Global variables might be reset after hot reload. I think it's workaround, maybe we need better solution
256
+ await this.updateStorybookGlobals();
226
257
  await this.updateBrowserGlobalVariables();
227
258
  await this.resetMousePosition();
228
- this.#logger.debug(`Triggering 'SetCurrentStory' event with storyId ${chalk_1.default.magenta(id)}`);
259
+ (0, logger_js_1.logger)().debug(`Triggering 'SetCurrentStory' event with storyId ${chalk_1.default.magenta(id)}`);
229
260
  const result = await this.#browser.executeAsyncScript(function (storyId, shouldWaitForReady, callback) {
230
261
  if (typeof window.__CREEVEY_SELECT_STORY__ == 'undefined') {
231
262
  callback([
@@ -247,7 +278,7 @@ class InternalBrowser {
247
278
  storyId,
248
279
  updatedArgs,
249
280
  });
250
- }, story.id, updatedArgs, core_events_1.UPDATE_STORY_ARGS, core_events_1.STORY_RENDERED);
281
+ }, story.id, updatedArgs, types_js_1.StorybookEvents.UPDATE_STORY_ARGS, types_js_1.StorybookEvents.STORY_RENDERED);
251
282
  }
252
283
  async loadStoriesFromBrowser() {
253
284
  const stories = await this.#browser.executeAsyncScript(function (callback) {
@@ -257,6 +288,17 @@ class InternalBrowser {
257
288
  throw new Error("Can't get stories, it seems creevey or storybook API isn't available");
258
289
  return stories;
259
290
  }
291
+ async afterTest(test) {
292
+ if ((0, logger_js_1.logger)().getLevel() === loglevel_1.default.levels.TRACE) {
293
+ const output = [];
294
+ const types = await this.#browser.manage().logs().getAvailableLogTypes();
295
+ for (const type of types) {
296
+ const logs = await this.#browser.manage().logs().get(type);
297
+ output.push(logs.map((log) => JSON.stringify(log.toJSON(), null, 2)).join('\n'));
298
+ }
299
+ (0, logger_js_1.logger)().debug('----------', (0, utils_js_1.getTestPath)(test).join('/'), '----------\n', output.join('\n'), '\n----------------------------------------------------------------------------------------------------');
300
+ }
301
+ }
260
302
  static async getBrowser(browserName, gridUrl, config, options) {
261
303
  const browserConfig = config.browsers[browserName];
262
304
  const { storybookUrl: address = config.storybookUrl, limit, viewport, _storybookGlobals } = browserConfig;
@@ -264,7 +306,7 @@ class InternalBrowser {
264
306
  const browser = await buildWebdriver(browserName, gridUrl, config, options);
265
307
  if (!browser)
266
308
  return null;
267
- const internalBrowser = new InternalBrowser(browser, options.port, logger_js_1.logger);
309
+ const internalBrowser = new InternalBrowser(browser, options.port, _storybookGlobals);
268
310
  try {
269
311
  if (utils_js_1.isShuttingDown.current)
270
312
  return null;
@@ -273,22 +315,21 @@ class InternalBrowser {
273
315
  gridUrl,
274
316
  viewport,
275
317
  storybookUrl: address,
276
- storybookGlobals: _storybookGlobals,
277
318
  resolveStorybookUrl: config.resolveStorybookUrl,
278
319
  });
279
320
  return done ? internalBrowser : null;
280
321
  }
281
322
  catch (originalError) {
282
323
  void internalBrowser.closeBrowser();
283
- const message = originalError instanceof Error ? originalError.message : originalError;
284
- const error = new Error(`Can't load storybook root page by URL ${await browser.getCurrentUrl()}: ${message}`);
324
+ const message = originalError instanceof Error ? originalError.message : (originalError ?? 'Unknown error');
325
+ const error = new Error(`Can't load storybook root page: ${message}`);
285
326
  if (originalError instanceof Error)
286
327
  error.stack = originalError.stack;
287
- logger_js_1.logger.error(error);
328
+ (0, logger_js_1.logger)().error(error);
288
329
  return null;
289
330
  }
290
331
  }
291
- async init({ browserName, gridUrl, viewport, storybookUrl, storybookGlobals, resolveStorybookUrl, }) {
332
+ async init({ browserName, gridUrl, viewport, storybookUrl, resolveStorybookUrl, }) {
292
333
  const sessionId = (await this.#browser.getSession()).getId();
293
334
  let browserHost = '';
294
335
  try {
@@ -299,19 +340,18 @@ class InternalBrowser {
299
340
  catch {
300
341
  /* noop */
301
342
  }
302
- this.#logger = loglevel_1.default.getLogger(sessionId);
303
- loglevel_plugin_prefix_1.default.apply(this.#logger, {
343
+ loglevel_plugin_prefix_1.default.apply((0, logger_js_1.logger)(), {
304
344
  format(level) {
305
345
  const levelColor = logger_js_1.colors[level.toUpperCase()];
306
- return `[${browserName}:${chalk_1.default.gray(sessionId)}] ${levelColor(level)} =>`;
346
+ return `[${browserName}:${chalk_1.default.gray(process.pid)}] ${levelColor(level)} => ${chalk_1.default.gray(sessionId)}`;
307
347
  },
308
348
  });
309
- this.#logger.debug(`Connected successful with ${chalk_1.default.green(browserHost)}`);
349
+ (0, logger_js_1.logger)().debug(`Connected successful with ${chalk_1.default.green(browserHost)}`);
310
350
  return await (0, utils_js_1.runSequence)([
311
- () => this.#browser.manage().setTimeouts({ pageLoad: 10000, script: 60000 }),
351
+ () => this.#browser.manage().setTimeouts({ pageLoad: 60000, script: 60000 }),
312
352
  () => this.openStorybookPage(storybookUrl, resolveStorybookUrl),
313
353
  () => this.waitForStorybook(),
314
- () => this.updateStorybookGlobals(storybookGlobals),
354
+ () => this.updateStorybookGlobals(),
315
355
  () => this.resolveCreeveyHost(),
316
356
  () => this.updateBrowserGlobalVariables(),
317
357
  // NOTE: Selenium draws automation toolbar with some delay after webdriver initialization
@@ -329,27 +369,28 @@ class InternalBrowser {
329
369
  }
330
370
  try {
331
371
  if (resolver) {
332
- this.#logger.debug('Resolving storybook url with custom resolver');
372
+ (0, logger_js_1.logger)().debug('Resolving storybook url with custom resolver');
333
373
  const resolvedUrl = await resolver();
334
- this.#logger.debug(`Resolver storybook url ${resolvedUrl}`);
374
+ (0, logger_js_1.logger)().debug(`Resolver storybook url ${resolvedUrl}`);
335
375
  await this.#browser.get((0, webdriver_js_1.appendIframePath)(resolvedUrl));
336
376
  }
337
377
  else {
378
+ // TODO Pageload timeout 10s
338
379
  // NOTE: getUrlChecker already calls `browser.get` so we don't need another one
339
- await (0, webdriver_js_1.resolveStorybookUrl)((0, webdriver_js_1.appendIframePath)(storybookUrl), (url) => this.checkUrl(url), this.#logger);
380
+ await (0, webdriver_js_1.resolveStorybookUrl)((0, webdriver_js_1.appendIframePath)(storybookUrl), (url) => this.checkUrl(url));
340
381
  }
341
382
  }
342
383
  catch (error) {
343
- this.#logger.error('Failed to resolve storybook URL', error instanceof Error ? error.message : '');
384
+ (0, logger_js_1.logger)().error('Failed to resolve storybook URL', error instanceof Error ? error.message : '');
344
385
  throw error;
345
386
  }
346
387
  }
347
388
  async checkUrl(url) {
348
389
  try {
349
390
  // NOTE: Before trying a new url, reset the current one
350
- this.#logger.debug(`Opening ${chalk_1.default.magenta('about:blank')} page`);
391
+ (0, logger_js_1.logger)().debug(`Opening ${chalk_1.default.magenta('about:blank')} page`);
351
392
  await openUrlAndWaitForPageSource(this.#browser, 'about:blank', (source) => !source.includes('<body></body>'));
352
- this.#logger.debug(`Opening ${chalk_1.default.magenta(url)} and checking the page source`);
393
+ (0, logger_js_1.logger)().debug(`Opening ${chalk_1.default.magenta(url)} and checking the page source`);
353
394
  const source = await openUrlAndWaitForPageSource(this.#browser, url,
354
395
  // NOTE: IE11 can return only `head` without body
355
396
  (source) => source.length == 0 || !/<body([^>]*>).+<\/body>/s.test(source));
@@ -358,7 +399,7 @@ class InternalBrowser {
358
399
  // because other add significant delay and some of them don't work in earlier chrome versions
359
400
  // Browsers always load page successful even it's failed
360
401
  // So we just check `root` element
361
- this.#logger.debug(`Checking ${chalk_1.default.cyan(`#${webdriver_js_1.storybookRootID}`)} existence on ${chalk_1.default.magenta(url)}`);
402
+ (0, logger_js_1.logger)().debug(`Checking ${chalk_1.default.cyan(`#${webdriver_js_1.storybookRootID}`)} existence on ${chalk_1.default.magenta(url)}`);
362
403
  return source.includes(`id="${webdriver_js_1.storybookRootID}"`);
363
404
  }
364
405
  catch {
@@ -366,7 +407,7 @@ class InternalBrowser {
366
407
  }
367
408
  }
368
409
  async waitForStorybook() {
369
- this.#logger.debug('Waiting for `setStories` event to make sure that storybook is initiated');
410
+ (0, logger_js_1.logger)().debug('Waiting for `setStories` event to make sure that storybook is initiated');
370
411
  const isTimeout = await Promise.race([
371
412
  new Promise((resolve) => {
372
413
  setTimeout(() => {
@@ -376,22 +417,17 @@ class InternalBrowser {
376
417
  (async () => {
377
418
  let wait = true;
378
419
  do {
379
- try {
380
- // TODO Research a different way to ensure storybook is initiated
381
- wait = await this.#browser.executeScript(function (SET_GLOBALS) {
382
- // TODO Maybe use
383
- // import { global } from '@storybook/global';
384
- // global.IS_STORYBOOK
385
- if (typeof window.__STORYBOOK_ADDONS_CHANNEL__ == 'undefined')
386
- return true;
387
- if (window.__STORYBOOK_ADDONS_CHANNEL__.last(SET_GLOBALS) == undefined)
388
- return true;
389
- return false;
390
- }, core_events_1.SET_GLOBALS);
391
- }
392
- catch (e) {
393
- this.#logger.debug('An error has been caught during the script:', e);
394
- }
420
+ // TODO Research a different way to ensure storybook is initiated
421
+ wait = await this.#browser.executeScript(function (SET_GLOBALS) {
422
+ // TODO Maybe use
423
+ // import { global } from '@storybook/global';
424
+ // global.IS_STORYBOOK
425
+ if (typeof window.__STORYBOOK_ADDONS_CHANNEL__ == 'undefined')
426
+ return true;
427
+ if (window.__STORYBOOK_ADDONS_CHANNEL__.last(SET_GLOBALS) == undefined)
428
+ return true;
429
+ return false;
430
+ }, types_js_1.StorybookEvents.SET_GLOBALS);
395
431
  } while (wait);
396
432
  return false;
397
433
  })(),
@@ -400,13 +436,13 @@ class InternalBrowser {
400
436
  if (isTimeout)
401
437
  throw new Error('Failed to wait `setStories` event');
402
438
  }
403
- async updateStorybookGlobals(globals) {
404
- if (!globals)
439
+ async updateStorybookGlobals() {
440
+ if (!this.#storybookGlobals)
405
441
  return;
406
- this.#logger.debug('Applying storybook globals');
442
+ (0, logger_js_1.logger)().debug('Applying storybook globals');
407
443
  await this.#browser.executeScript(function (globals) {
408
444
  window.__CREEVEY_UPDATE_GLOBALS__(globals);
409
- }, globals);
445
+ }, this.#storybookGlobals);
410
446
  }
411
447
  async resolveCreeveyHost() {
412
448
  const addresses = (0, webdriver_js_1.getAddresses)();
@@ -453,7 +489,7 @@ class InternalBrowser {
453
489
  innerHeight: window.innerHeight,
454
490
  };
455
491
  });
456
- this.#logger.debug(`Resizing viewport from ${innerWidth}x${innerHeight} to ${viewport.width}x${viewport.height}`);
492
+ (0, logger_js_1.logger)().debug(`Resizing viewport from ${innerWidth}x${innerHeight} to ${viewport.width}x${viewport.height}`);
457
493
  const dWidth = windowRect.width - innerWidth;
458
494
  const dHeight = windowRect.height - innerHeight;
459
495
  await this.#browser
@@ -465,7 +501,7 @@ class InternalBrowser {
465
501
  });
466
502
  }
467
503
  async resetMousePosition() {
468
- this.#logger.debug('Resetting mouse position to the top-left corner');
504
+ (0, logger_js_1.logger)().debug('Resetting mouse position to the top-left corner');
469
505
  const browserName = (await this.#browser.getCapabilities()).getBrowserName();
470
506
  const [browserVersion] = (await this.#browser.getCapabilities()).getBrowserVersion()?.split('.') ??
471
507
  (await this.#browser.getCapabilities()).get('version')?.split('.') ??
@@ -491,8 +527,9 @@ class InternalBrowser {
491
527
  })
492
528
  .perform();
493
529
  }
494
- else if (browserName == 'firefox' && browserVersion == '61') {
530
+ else if (browserName == 'firefox') {
495
531
  // NOTE Firefox for some reason moving by 0 x 0 move cursor in bottom left corner :sad:
532
+ // NOTE In recent versions (eg 128.0) moving by 0 x 0 doesn't work at all
496
533
  await this.#browser.actions().move({ origin: selenium_webdriver_1.Origin.VIEWPORT, x: 0, y: 1 }).perform();
497
534
  }
498
535
  else {
@@ -504,7 +541,7 @@ class InternalBrowser {
504
541
  const ignoreSelectors = Array.prototype.concat(ignoreElements).filter(Boolean);
505
542
  if (!ignoreSelectors.length)
506
543
  return null;
507
- this.#logger.debug('Hiding ignored elements before capturing');
544
+ (0, logger_js_1.logger)().debug('Hiding ignored elements before capturing');
508
545
  return await this.#browser.executeScript(function (ignoreSelectors) {
509
546
  return window.__CREEVEY_INSERT_IGNORE_STYLES__(ignoreSelectors);
510
547
  }, ignoreSelectors);
@@ -561,11 +598,11 @@ class InternalBrowser {
561
598
  compositeImage.data[i + 3] = image.data[j + 3];
562
599
  }
563
600
  }
564
- return compositeImage.data;
601
+ return pngjs_1.PNG.sync.write(compositeImage);
565
602
  }
566
603
  async removeIgnoreStyles(ignoreStyles) {
567
604
  if (ignoreStyles) {
568
- this.#logger.debug('Revert hiding ignored elements');
605
+ (0, logger_js_1.logger)().debug('Revert hiding ignored elements');
569
606
  await this.#browser.executeScript(function (ignoreStyles) {
570
607
  window.__CREEVEY_REMOVE_IGNORE_STYLES__(ignoreStyles);
571
608
  }, ignoreStyles);
@@ -597,7 +634,7 @@ class InternalBrowser {
597
634
  this.#keepAliveInterval = setInterval(() => {
598
635
  // NOTE Simple way to keep session alive
599
636
  void this.#browser.getCurrentUrl().then((url) => {
600
- logger_js_1.logger.debug('current url', chalk_1.default.magenta(url));
637
+ (0, logger_js_1.logger)().debug('current url', chalk_1.default.magenta(url));
601
638
  });
602
639
  }, 10 * 1000);
603
640
  }