@datadog/datadog-ci 2.40.3 → 2.41.0

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 (252) hide show
  1. package/README.md +1 -0
  2. package/dist/commands/deployment/cli.js +2 -1
  3. package/dist/commands/deployment/cli.js.map +1 -1
  4. package/dist/commands/deployment/correlate.d.ts +18 -0
  5. package/dist/commands/deployment/correlate.js +154 -0
  6. package/dist/commands/deployment/correlate.js.map +1 -0
  7. package/dist/commands/dsyms/utils.js +2 -4
  8. package/dist/commands/dsyms/utils.js.map +1 -1
  9. package/dist/helpers/git/get-git-data.d.ts +2 -0
  10. package/dist/helpers/git/get-git-data.js +11 -1
  11. package/dist/helpers/git/get-git-data.js.map +1 -1
  12. package/package.json +3 -2
  13. package/dist/__tests__/cli.test.d.ts +0 -1
  14. package/dist/__tests__/cli.test.js +0 -41
  15. package/dist/__tests__/cli.test.js.map +0 -1
  16. package/dist/commands/cloud-run/__tests__/fixtures.d.ts +0 -2
  17. package/dist/commands/cloud-run/__tests__/fixtures.js +0 -12
  18. package/dist/commands/cloud-run/__tests__/fixtures.js.map +0 -1
  19. package/dist/commands/cloud-run/__tests__/flare.test.d.ts +0 -1
  20. package/dist/commands/cloud-run/__tests__/flare.test.js +0 -557
  21. package/dist/commands/cloud-run/__tests__/flare.test.js.map +0 -1
  22. package/dist/commands/deployment/__tests__/mark.test.d.ts +0 -1
  23. package/dist/commands/deployment/__tests__/mark.test.js +0 -47
  24. package/dist/commands/deployment/__tests__/mark.test.js.map +0 -1
  25. package/dist/commands/dora/__tests__/deployment.test.d.ts +0 -1
  26. package/dist/commands/dora/__tests__/deployment.test.js +0 -201
  27. package/dist/commands/dora/__tests__/deployment.test.js.map +0 -1
  28. package/dist/commands/dsyms/__tests__/upload.test.d.ts +0 -1
  29. package/dist/commands/dsyms/__tests__/upload.test.js +0 -346
  30. package/dist/commands/dsyms/__tests__/upload.test.js.map +0 -1
  31. package/dist/commands/dsyms/__tests__/utils.test.d.ts +0 -1
  32. package/dist/commands/dsyms/__tests__/utils.test.js +0 -103
  33. package/dist/commands/dsyms/__tests__/utils.test.js.map +0 -1
  34. package/dist/commands/elf-symbols/__tests__/elf.test.d.ts +0 -1
  35. package/dist/commands/elf-symbols/__tests__/elf.test.js +0 -813
  36. package/dist/commands/elf-symbols/__tests__/elf.test.js.map +0 -1
  37. package/dist/commands/elf-symbols/__tests__/upload.test.d.ts +0 -1
  38. package/dist/commands/elf-symbols/__tests__/upload.test.js +0 -249
  39. package/dist/commands/elf-symbols/__tests__/upload.test.js.map +0 -1
  40. package/dist/commands/flutter-symbols/__tests__/upload.test.d.ts +0 -1
  41. package/dist/commands/flutter-symbols/__tests__/upload.test.js +0 -617
  42. package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +0 -1
  43. package/dist/commands/gate/__tests__/evaluate.test.d.ts +0 -1
  44. package/dist/commands/gate/__tests__/evaluate.test.js +0 -398
  45. package/dist/commands/gate/__tests__/evaluate.test.js.map +0 -1
  46. package/dist/commands/gate/__tests__/scope.test.d.ts +0 -1
  47. package/dist/commands/gate/__tests__/scope.test.js +0 -29
  48. package/dist/commands/gate/__tests__/scope.test.js.map +0 -1
  49. package/dist/commands/git-metadata/__tests__/git.test.d.ts +0 -1
  50. package/dist/commands/git-metadata/__tests__/git.test.js +0 -132
  51. package/dist/commands/git-metadata/__tests__/git.test.js.map +0 -1
  52. package/dist/commands/git-metadata/__tests__/gitdb.test.d.ts +0 -1
  53. package/dist/commands/git-metadata/__tests__/gitdb.test.js +0 -1386
  54. package/dist/commands/git-metadata/__tests__/gitdb.test.js.map +0 -1
  55. package/dist/commands/git-metadata/__tests__/library.test.d.ts +0 -1
  56. package/dist/commands/git-metadata/__tests__/library.test.js +0 -118
  57. package/dist/commands/git-metadata/__tests__/library.test.js.map +0 -1
  58. package/dist/commands/git-metadata/__tests__/upload.test.d.ts +0 -1
  59. package/dist/commands/git-metadata/__tests__/upload.test.js +0 -52
  60. package/dist/commands/git-metadata/__tests__/upload.test.js.map +0 -1
  61. package/dist/commands/junit/__tests__/id.test.d.ts +0 -1
  62. package/dist/commands/junit/__tests__/id.test.js +0 -24
  63. package/dist/commands/junit/__tests__/id.test.js.map +0 -1
  64. package/dist/commands/junit/__tests__/upload.test.d.ts +0 -1
  65. package/dist/commands/junit/__tests__/upload.test.js +0 -495
  66. package/dist/commands/junit/__tests__/upload.test.js.map +0 -1
  67. package/dist/commands/lambda/__tests__/fixtures.d.ts +0 -51
  68. package/dist/commands/lambda/__tests__/fixtures.js +0 -146
  69. package/dist/commands/lambda/__tests__/fixtures.js.map +0 -1
  70. package/dist/commands/lambda/__tests__/flare.test.d.ts +0 -1
  71. package/dist/commands/lambda/__tests__/flare.test.js +0 -730
  72. package/dist/commands/lambda/__tests__/flare.test.js.map +0 -1
  73. package/dist/commands/lambda/__tests__/functions/commons.test.d.ts +0 -1
  74. package/dist/commands/lambda/__tests__/functions/commons.test.js +0 -791
  75. package/dist/commands/lambda/__tests__/functions/commons.test.js.map +0 -1
  76. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.d.ts +0 -1
  77. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js +0 -386
  78. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +0 -1
  79. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.d.ts +0 -1
  80. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js +0 -721
  81. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js.map +0 -1
  82. package/dist/commands/lambda/__tests__/functions/uninstrument.test.d.ts +0 -1
  83. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +0 -513
  84. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js.map +0 -1
  85. package/dist/commands/lambda/__tests__/functions/versionChecker.test.d.ts +0 -1
  86. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js +0 -33
  87. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js.map +0 -1
  88. package/dist/commands/lambda/__tests__/instrument.test.d.ts +0 -1
  89. package/dist/commands/lambda/__tests__/instrument.test.js +0 -1511
  90. package/dist/commands/lambda/__tests__/instrument.test.js.map +0 -1
  91. package/dist/commands/lambda/__tests__/loggroup.test.d.ts +0 -1
  92. package/dist/commands/lambda/__tests__/loggroup.test.js +0 -340
  93. package/dist/commands/lambda/__tests__/loggroup.test.js.map +0 -1
  94. package/dist/commands/lambda/__tests__/prompt.test.d.ts +0 -1
  95. package/dist/commands/lambda/__tests__/prompt.test.js +0 -206
  96. package/dist/commands/lambda/__tests__/prompt.test.js.map +0 -1
  97. package/dist/commands/lambda/__tests__/tags.test.d.ts +0 -1
  98. package/dist/commands/lambda/__tests__/tags.test.js +0 -305
  99. package/dist/commands/lambda/__tests__/tags.test.js.map +0 -1
  100. package/dist/commands/lambda/__tests__/uninstrument.test.d.ts +0 -1
  101. package/dist/commands/lambda/__tests__/uninstrument.test.js +0 -722
  102. package/dist/commands/lambda/__tests__/uninstrument.test.js.map +0 -1
  103. package/dist/commands/measure/__tests__/measure.test.d.ts +0 -1
  104. package/dist/commands/measure/__tests__/measure.test.js +0 -110
  105. package/dist/commands/measure/__tests__/measure.test.js.map +0 -1
  106. package/dist/commands/react-native/__tests__/codepush.test.d.ts +0 -1
  107. package/dist/commands/react-native/__tests__/codepush.test.js +0 -161
  108. package/dist/commands/react-native/__tests__/codepush.test.js.map +0 -1
  109. package/dist/commands/react-native/__tests__/interfaces.test.d.ts +0 -1
  110. package/dist/commands/react-native/__tests__/interfaces.test.js +0 -33
  111. package/dist/commands/react-native/__tests__/interfaces.test.js.map +0 -1
  112. package/dist/commands/react-native/__tests__/upload.test.d.ts +0 -1
  113. package/dist/commands/react-native/__tests__/upload.test.js +0 -238
  114. package/dist/commands/react-native/__tests__/upload.test.js.map +0 -1
  115. package/dist/commands/react-native/__tests__/utils.test.d.ts +0 -1
  116. package/dist/commands/react-native/__tests__/utils.test.js +0 -27
  117. package/dist/commands/react-native/__tests__/utils.test.js.map +0 -1
  118. package/dist/commands/react-native/__tests__/xcode.test.d.ts +0 -1
  119. package/dist/commands/react-native/__tests__/xcode.test.js +0 -465
  120. package/dist/commands/react-native/__tests__/xcode.test.js.map +0 -1
  121. package/dist/commands/sarif/__tests__/upload.test.d.ts +0 -1
  122. package/dist/commands/sarif/__tests__/upload.test.js +0 -228
  123. package/dist/commands/sarif/__tests__/upload.test.js.map +0 -1
  124. package/dist/commands/sbom/__tests__/payload.test.d.ts +0 -1
  125. package/dist/commands/sbom/__tests__/payload.test.js +0 -262
  126. package/dist/commands/sbom/__tests__/payload.test.js.map +0 -1
  127. package/dist/commands/sbom/__tests__/validation.test.d.ts +0 -1
  128. package/dist/commands/sbom/__tests__/validation.test.js +0 -41
  129. package/dist/commands/sbom/__tests__/validation.test.js.map +0 -1
  130. package/dist/commands/sourcemaps/__tests__/upload.test.d.ts +0 -1
  131. package/dist/commands/sourcemaps/__tests__/upload.test.js +0 -270
  132. package/dist/commands/sourcemaps/__tests__/upload.test.js.map +0 -1
  133. package/dist/commands/sourcemaps/__tests__/utils.test.d.ts +0 -1
  134. package/dist/commands/sourcemaps/__tests__/utils.test.js +0 -31
  135. package/dist/commands/sourcemaps/__tests__/utils.test.js.map +0 -1
  136. package/dist/commands/stepfunctions/__tests__/awsCommands.test.d.ts +0 -1
  137. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js +0 -192
  138. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js.map +0 -1
  139. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.d.ts +0 -6
  140. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js +0 -45
  141. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js.map +0 -1
  142. package/dist/commands/stepfunctions/__tests__/fixtures/cli.d.ts +0 -5
  143. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js +0 -19
  144. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js.map +0 -1
  145. package/dist/commands/stepfunctions/__tests__/helpers.test.d.ts +0 -1
  146. package/dist/commands/stepfunctions/__tests__/helpers.test.js +0 -205
  147. package/dist/commands/stepfunctions/__tests__/helpers.test.js.map +0 -1
  148. package/dist/commands/stepfunctions/__tests__/instrument.test.d.ts +0 -1
  149. package/dist/commands/stepfunctions/__tests__/instrument.test.js +0 -431
  150. package/dist/commands/stepfunctions/__tests__/instrument.test.js.map +0 -1
  151. package/dist/commands/stepfunctions/__tests__/uninstrument.test.d.ts +0 -1
  152. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js +0 -166
  153. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js.map +0 -1
  154. package/dist/commands/synthetics/__tests__/api.test.d.ts +0 -1
  155. package/dist/commands/synthetics/__tests__/api.test.js +0 -422
  156. package/dist/commands/synthetics/__tests__/api.test.js.map +0 -1
  157. package/dist/commands/synthetics/__tests__/cli.test.d.ts +0 -1
  158. package/dist/commands/synthetics/__tests__/cli.test.js +0 -1325
  159. package/dist/commands/synthetics/__tests__/cli.test.js.map +0 -1
  160. package/dist/commands/synthetics/__tests__/fixtures.d.ts +0 -149
  161. package/dist/commands/synthetics/__tests__/fixtures.js +0 -507
  162. package/dist/commands/synthetics/__tests__/fixtures.js.map +0 -1
  163. package/dist/commands/synthetics/__tests__/mobile.test.d.ts +0 -1
  164. package/dist/commands/synthetics/__tests__/mobile.test.js +0 -376
  165. package/dist/commands/synthetics/__tests__/mobile.test.js.map +0 -1
  166. package/dist/commands/synthetics/__tests__/reporters/default.test.d.ts +0 -1
  167. package/dist/commands/synthetics/__tests__/reporters/default.test.js +0 -354
  168. package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +0 -1
  169. package/dist/commands/synthetics/__tests__/reporters/junit.test.d.ts +0 -1
  170. package/dist/commands/synthetics/__tests__/reporters/junit.test.js +0 -353
  171. package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +0 -1
  172. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.d.ts +0 -1
  173. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js +0 -232
  174. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js.map +0 -1
  175. package/dist/commands/synthetics/__tests__/run-tests-lib.test.d.ts +0 -1
  176. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js +0 -735
  177. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js.map +0 -1
  178. package/dist/commands/synthetics/__tests__/test.test.d.ts +0 -1
  179. package/dist/commands/synthetics/__tests__/test.test.js +0 -33
  180. package/dist/commands/synthetics/__tests__/test.test.js.map +0 -1
  181. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.d.ts +0 -1
  182. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js +0 -21
  183. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js.map +0 -1
  184. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.d.ts +0 -1
  185. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js +0 -80
  186. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js.map +0 -1
  187. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.d.ts +0 -1
  188. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js +0 -109
  189. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +0 -1
  190. package/dist/commands/synthetics/__tests__/utils/internal.test.d.ts +0 -1
  191. package/dist/commands/synthetics/__tests__/utils/internal.test.js +0 -186
  192. package/dist/commands/synthetics/__tests__/utils/internal.test.js.map +0 -1
  193. package/dist/commands/synthetics/__tests__/utils/public.test.d.ts +0 -1
  194. package/dist/commands/synthetics/__tests__/utils/public.test.js +0 -1526
  195. package/dist/commands/synthetics/__tests__/utils/public.test.js.map +0 -1
  196. package/dist/commands/tag/__tests__/tag.test.d.ts +0 -1
  197. package/dist/commands/tag/__tests__/tag.test.js +0 -75
  198. package/dist/commands/tag/__tests__/tag.test.js.map +0 -1
  199. package/dist/commands/trace/__tests__/trace.test.d.ts +0 -1
  200. package/dist/commands/trace/__tests__/trace.test.js +0 -145
  201. package/dist/commands/trace/__tests__/trace.test.js.map +0 -1
  202. package/dist/commands/unity-symbols/__tests__/upload.test.d.ts +0 -1
  203. package/dist/commands/unity-symbols/__tests__/upload.test.js +0 -369
  204. package/dist/commands/unity-symbols/__tests__/upload.test.js.map +0 -1
  205. package/dist/helpers/__tests__/app.test.d.ts +0 -1
  206. package/dist/helpers/__tests__/app.test.js +0 -31
  207. package/dist/helpers/__tests__/app.test.js.map +0 -1
  208. package/dist/helpers/__tests__/ci.test.d.ts +0 -1
  209. package/dist/helpers/__tests__/ci.test.js +0 -252
  210. package/dist/helpers/__tests__/ci.test.js.map +0 -1
  211. package/dist/helpers/__tests__/fixtures.d.ts +0 -33
  212. package/dist/helpers/__tests__/fixtures.js +0 -71
  213. package/dist/helpers/__tests__/fixtures.js.map +0 -1
  214. package/dist/helpers/__tests__/flare.test.d.ts +0 -1
  215. package/dist/helpers/__tests__/flare.test.js +0 -226
  216. package/dist/helpers/__tests__/flare.test.js.map +0 -1
  217. package/dist/helpers/__tests__/fs.test.d.ts +0 -1
  218. package/dist/helpers/__tests__/fs.test.js +0 -189
  219. package/dist/helpers/__tests__/fs.test.js.map +0 -1
  220. package/dist/helpers/__tests__/plist.test.d.ts +0 -1
  221. package/dist/helpers/__tests__/plist.test.js +0 -43
  222. package/dist/helpers/__tests__/plist.test.js.map +0 -1
  223. package/dist/helpers/__tests__/prompt.test.d.ts +0 -1
  224. package/dist/helpers/__tests__/prompt.test.js +0 -71
  225. package/dist/helpers/__tests__/prompt.test.js.map +0 -1
  226. package/dist/helpers/__tests__/retry.test.d.ts +0 -1
  227. package/dist/helpers/__tests__/retry.test.js +0 -99
  228. package/dist/helpers/__tests__/retry.test.js.map +0 -1
  229. package/dist/helpers/__tests__/tags.test.d.ts +0 -1
  230. package/dist/helpers/__tests__/tags.test.js +0 -71
  231. package/dist/helpers/__tests__/tags.test.js.map +0 -1
  232. package/dist/helpers/__tests__/upload.test.d.ts +0 -1
  233. package/dist/helpers/__tests__/upload.test.js +0 -231
  234. package/dist/helpers/__tests__/upload.test.js.map +0 -1
  235. package/dist/helpers/__tests__/user-provided-git.test.d.ts +0 -1
  236. package/dist/helpers/__tests__/user-provided-git.test.js +0 -119
  237. package/dist/helpers/__tests__/user-provided-git.test.js.map +0 -1
  238. package/dist/helpers/__tests__/utils.test.d.ts +0 -1
  239. package/dist/helpers/__tests__/utils.test.js +0 -429
  240. package/dist/helpers/__tests__/utils.test.js.map +0 -1
  241. package/dist/helpers/__tests__/validation.test.d.ts +0 -1
  242. package/dist/helpers/__tests__/validation.test.js +0 -25
  243. package/dist/helpers/__tests__/validation.test.js.map +0 -1
  244. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.d.ts +0 -1
  245. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js +0 -103
  246. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js.map +0 -1
  247. package/dist/helpers/git/__tests__/format-git-span-data.test.d.ts +0 -1
  248. package/dist/helpers/git/__tests__/format-git-span-data.test.js +0 -121
  249. package/dist/helpers/git/__tests__/format-git-span-data.test.js.map +0 -1
  250. package/dist/helpers/git/__tests__/get-git-data.test.d.ts +0 -1
  251. package/dist/helpers/git/__tests__/get-git-data.test.js +0 -72
  252. package/dist/helpers/git/__tests__/get-git-data.test.js.map +0 -1
@@ -1,353 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const fs_1 = __importDefault(require("fs"));
16
- const promises_1 = __importDefault(require("fs/promises"));
17
- const interfaces_1 = require("../../interfaces");
18
- const junit_1 = require("../../reporters/junit");
19
- const fixtures_1 = require("../fixtures");
20
- const globalTestMock = (0, fixtures_1.getApiTest)('123-456-789');
21
- const globalStepMock = (0, fixtures_1.getStep)();
22
- const globalResultMock = (0, fixtures_1.getBrowserResult)('1', globalTestMock);
23
- const globalSummaryMock = (0, fixtures_1.getSummary)();
24
- describe('Junit reporter', () => {
25
- const writeMock = jest.fn();
26
- const commandMock = {
27
- context: { stdout: { write: writeMock } },
28
- jUnitReport: 'junit',
29
- runName: 'Test Suite name',
30
- };
31
- let reporter;
32
- describe('constructor', () => {
33
- beforeEach(() => {
34
- reporter = new junit_1.JUnitReporter(commandMock);
35
- });
36
- it("should append '.xml' to destination if isn't there", () => {
37
- expect(reporter['destination']).toBe('junit.xml');
38
- });
39
- it('should give a default run name', () => {
40
- expect(new junit_1.JUnitReporter(Object.assign(Object.assign({}, commandMock), { runName: undefined }))['json'].testsuites.$.name).toBe('Undefined run');
41
- });
42
- });
43
- describe('runEnd', () => {
44
- beforeEach(() => {
45
- reporter = new junit_1.JUnitReporter(commandMock);
46
- jest.spyOn(fs_1.default, 'writeFileSync');
47
- jest.spyOn(reporter['builder'], 'buildObject');
48
- });
49
- it('should build the xml', () => __awaiter(void 0, void 0, void 0, function* () {
50
- reporter.runEnd(globalSummaryMock, '');
51
- expect(reporter['builder'].buildObject).toHaveBeenCalledWith(reporter['json']);
52
- expect(fs_1.default.writeFileSync).toHaveBeenCalledWith('junit.xml', expect.any(String), 'utf8');
53
- expect(writeMock).toHaveBeenCalledTimes(1);
54
- // Cleaning
55
- yield promises_1.default.unlink(reporter['destination']);
56
- }));
57
- it('should gracefully fail', () => __awaiter(void 0, void 0, void 0, function* () {
58
- jest.spyOn(reporter['builder'], 'buildObject').mockImplementation(() => {
59
- throw new Error('Fail');
60
- });
61
- reporter.runEnd(globalSummaryMock, '');
62
- expect(fs_1.default.writeFileSync).not.toHaveBeenCalled();
63
- expect(writeMock).toHaveBeenCalledTimes(1);
64
- }));
65
- it('should create the file', () => __awaiter(void 0, void 0, void 0, function* () {
66
- reporter['destination'] = 'junit/report.xml';
67
- reporter.runEnd(globalSummaryMock, '');
68
- const stat = yield promises_1.default.stat(reporter['destination']);
69
- expect(stat).toBeDefined();
70
- // Cleaning
71
- yield promises_1.default.unlink(reporter['destination']);
72
- yield promises_1.default.rmdir('junit');
73
- }));
74
- it('should not throw on existing directory', () => __awaiter(void 0, void 0, void 0, function* () {
75
- yield promises_1.default.mkdir('junit');
76
- reporter['destination'] = 'junit/report.xml';
77
- reporter.runEnd(globalSummaryMock, '');
78
- // Cleaning
79
- yield promises_1.default.unlink(reporter['destination']);
80
- yield promises_1.default.rmdir('junit');
81
- }));
82
- it('testsuites contains summary properties', () => __awaiter(void 0, void 0, void 0, function* () {
83
- jest.spyOn(fs_1.default, 'writeFileSync').mockImplementation(() => { });
84
- reporter.runEnd(Object.assign(Object.assign({}, globalSummaryMock), { criticalErrors: 1, failed: 2, failedNonBlocking: 3, passed: 4, skipped: 5, testsNotFound: new Set(['a', 'b', 'c']), timedOut: 6 }), fixtures_1.MOCK_BASE_URL);
85
- expect(reporter['json'].testsuites.$).toStrictEqual({
86
- batch_id: fixtures_1.BATCH_ID,
87
- batch_url: `${fixtures_1.MOCK_BASE_URL}synthetics/explorer/ci?batchResultId=${fixtures_1.BATCH_ID}`,
88
- name: 'Test Suite name',
89
- tests_critical_error: 1,
90
- tests_failed: 2,
91
- tests_failed_non_blocking: 3,
92
- tests_not_found: 3,
93
- tests_passed: 4,
94
- tests_skipped: 5,
95
- tests_timed_out: 6,
96
- });
97
- }));
98
- });
99
- describe('resultEnd', () => {
100
- beforeEach(() => {
101
- reporter = new junit_1.JUnitReporter(commandMock);
102
- });
103
- it('should give a default suite name', () => {
104
- reporter.resultEnd(globalResultMock, '', '');
105
- const testsuite = reporter['json'].testsuites.testsuite[0];
106
- expect(testsuite.$.name).toBe('Undefined suite');
107
- });
108
- it('should use the same report for tests from same suite', () => {
109
- const results = [
110
- Object.assign(Object.assign({}, globalResultMock), { test: Object.assign(Object.assign({}, globalTestMock), { suite: 'same suite' }) }),
111
- Object.assign(Object.assign({}, globalResultMock), { test: Object.assign(Object.assign({}, globalTestMock), { suite: 'same suite' }) }),
112
- ];
113
- results.forEach((result) => reporter.resultEnd(result, '', ''));
114
- // We should have 1 unique report. Not 2 different ones.
115
- expect(reporter['json'].testsuites.testsuite.length).toBe(1);
116
- // And this unique report should include the 2 tests.
117
- expect(reporter['json'].testsuites.testsuite[0].$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultSuiteStats)()), { tests: 2 }));
118
- });
119
- it('should add stats to the run', () => {
120
- reporter.resultEnd(Object.assign(Object.assign({}, globalResultMock), { test: Object.assign(Object.assign({}, globalTestMock), { suite: 'suite 1' }) }), '', '');
121
- reporter.testTrigger(Object.assign(Object.assign({}, globalTestMock), { suite: 'suite 2' }), '', interfaces_1.ExecutionRule.SKIPPED, {});
122
- reporter.resultEnd(Object.assign(Object.assign({}, globalResultMock), { passed: false, result: (0, fixtures_1.getFailedMultiStepsServerResult)(), test: Object.assign(Object.assign({}, globalTestMock), { suite: 'suite 2' }) }), '', '');
123
- reporter.resultEnd({
124
- executionRule: interfaces_1.ExecutionRule.SKIPPED,
125
- passed: true,
126
- resultId: '123',
127
- selectiveRerun: { decision: 'skip', reason: 'passed', linked_result_id: '123' },
128
- test: Object.assign(Object.assign({}, globalTestMock), { suite: 'suite 2' }),
129
- timedOut: false,
130
- }, '', '');
131
- const [suitePassed, suiteFailed] = reporter['json'].testsuites.testsuite;
132
- expect(suitePassed.$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultSuiteStats)()), { tests: 1 }));
133
- expect(suiteFailed.$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultSuiteStats)()), { errors: 0, failures: 1, skipped: 1, tests: 3 }));
134
- });
135
- it('should fall back to a test level failure', () => {
136
- reporter.resultEnd(Object.assign(Object.assign({}, globalResultMock), { passed: false, result: (0, fixtures_1.getFailedMultiStepsTestLevelServerResult)(), test: Object.assign(Object.assign({}, globalTestMock), { suite: 'suite 1' }) }), '', '');
137
- const [suiteFailed] = reporter['json'].testsuites.testsuite;
138
- expect(suiteFailed.$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultSuiteStats)()), { errors: 0, failures: 1, tests: 1 }));
139
- });
140
- it('should report errors', () => {
141
- const browserResult1 = Object.assign(Object.assign({}, globalResultMock), { result: Object.assign(Object.assign({}, (0, fixtures_1.getBrowserServerResult)()), { stepDetails: [
142
- Object.assign(Object.assign({}, (0, fixtures_1.getStep)()), { allowFailure: true, browserErrors: [
143
- {
144
- description: 'error description',
145
- name: 'error name',
146
- type: 'error type',
147
- },
148
- {
149
- description: 'error description',
150
- name: 'error name',
151
- type: 'error type',
152
- },
153
- ], error: 'error', warnings: [
154
- {
155
- message: 'warning message',
156
- type: 'warning type',
157
- },
158
- ] }),
159
- (0, fixtures_1.getStep)(),
160
- ] }) });
161
- const browserResult2 = Object.assign(Object.assign({}, globalResultMock), { result: (0, fixtures_1.getBrowserServerResult)() });
162
- const browserResult3 = Object.assign(Object.assign({}, globalResultMock), { result: Object.assign(Object.assign({}, (0, fixtures_1.getBrowserServerResult)()), { failure: { code: 'TIMEOUT', message: 'The batch timed out before receiving the result.' } }), timedOut: true });
163
- const apiResult = Object.assign(Object.assign({}, globalResultMock), { result: Object.assign(Object.assign({}, (0, fixtures_1.getMultiStepsServerResult)()), { steps: [
164
- Object.assign(Object.assign({}, (0, fixtures_1.getMultiStep)()), { failure: {
165
- code: '1',
166
- message: 'message',
167
- } }),
168
- ] }) });
169
- reporter.resultEnd(browserResult1, '', '');
170
- reporter.resultEnd(browserResult2, '', '');
171
- reporter.resultEnd(browserResult3, '', '');
172
- reporter.resultEnd(apiResult, '', '');
173
- const testsuite = reporter['json'].testsuites.testsuite[0];
174
- const results = [
175
- [1, 2, 0, 1],
176
- [0, 0, 0, 0],
177
- [0, 0, 1, 0],
178
- [0, 0, 1, 0],
179
- ];
180
- const entries = Object.entries(testsuite.testcase);
181
- for (const [i, testcase] of entries) {
182
- const result = results[i];
183
- expect(testcase.allowed_error.length).toBe(result[0]);
184
- expect(testcase.browser_error.length).toBe(result[1]);
185
- expect(testcase.failure.length).toBe(result[2]);
186
- expect(testcase.warning.length).toBe(result[3]);
187
- }
188
- });
189
- });
190
- describe('getTestCase', () => {
191
- beforeEach(() => {
192
- reporter = new junit_1.JUnitReporter(commandMock);
193
- });
194
- it('should add stats to the test case - api test', () => {
195
- const resultMock = Object.assign(Object.assign({}, globalResultMock), { result: (0, fixtures_1.getApiServerResult)({ passed: false }) });
196
- const testCase = reporter['getTestCase'](resultMock, '', '');
197
- expect(testCase.$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultTestCaseStats)()), { steps_count: 1, steps_errors: 1, steps_failures: 1 }));
198
- });
199
- it('should add stats to the test case - multistep test', () => {
200
- const resultMock = Object.assign(Object.assign({}, globalResultMock), { result: (0, fixtures_1.getFailedMultiStepsServerResult)() });
201
- const testCase = reporter['getTestCase'](resultMock, '', '');
202
- expect(testCase.$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultTestCaseStats)()), { steps_allowfailures: 1, steps_count: 4, steps_errors: 2, steps_failures: 2, steps_skipped: 1 }));
203
- });
204
- it('should add stats to the test case - browser test', () => {
205
- const resultMock = Object.assign(Object.assign({}, globalResultMock), {
206
- result: Object.assign(Object.assign({}, globalResultMock.result), { stepDetails: [
207
- globalStepMock,
208
- Object.assign(Object.assign({}, globalStepMock), {
209
- browserErrors: [{ type: 'error', name: 'Error', description: 'Description' }],
210
- error: 'Error',
211
- subTestStepDetails: [globalStepMock],
212
- warnings: [{ type: 'warning', message: 'Warning' }],
213
- }),
214
- ] }),
215
- });
216
- const testCase = reporter['getTestCase'](resultMock, '', '');
217
- expect(testCase.$).toMatchObject(Object.assign(Object.assign({}, (0, junit_1.getDefaultTestCaseStats)()), { steps_count: 3, steps_errors: 2, steps_failures: 1, steps_warnings: 1 }));
218
- });
219
- });
220
- });
221
- describe('GitLab test report compatibility', () => {
222
- const writeMock = jest.fn();
223
- const commandMock = {
224
- context: { stdout: { write: writeMock } },
225
- jUnitReport: 'junit',
226
- runName: 'Test Suite name',
227
- };
228
- let reporter;
229
- beforeEach(() => {
230
- reporter = new junit_1.JUnitReporter(commandMock);
231
- });
232
- test('all test case names are unique', () => {
233
- const locations = ['aws:eu-central-1', 'aws:eu-central-2'];
234
- const devices = {
235
- chrome: { height: 1100, id: 'chrome.laptop_large', width: 1440 },
236
- firefox: { height: 1100, id: 'firefox.laptop_large', width: 1440 },
237
- };
238
- const apiTest = (0, fixtures_1.getApiTest)('aaa-aaa-aaa', { locations });
239
- const browserTest = (0, fixtures_1.getBrowserTest)('bbb-bbb-bbb', [devices.chrome.id, devices.firefox.id], { locations });
240
- const getTestCase = (test, resultId, { location, device, timedOut, }) => reporter['getTestCase'](Object.assign(Object.assign(Object.assign({}, (test.type === 'browser' ? (0, fixtures_1.getBrowserResult)(resultId, test, { device }) : (0, fixtures_1.getApiResult)(resultId, test))), (location && { location })), (timedOut && { timedOut })), '', '');
241
- const testCases = [
242
- // API test, location 1
243
- getTestCase(apiTest, '1', { location: locations[0] }),
244
- // API test, location 2
245
- getTestCase(apiTest, '2', { location: locations[1] }),
246
- // API test, location 1 (timed out)
247
- getTestCase(apiTest, '3', { location: locations[0], timedOut: true }),
248
- // API test, location 2 (timed out)
249
- getTestCase(apiTest, '4', { location: locations[1], timedOut: true }),
250
- // Browser test, location 1, device 1
251
- getTestCase(browserTest, '5', { location: locations[0], device: devices.chrome }),
252
- // Browser test, location 1, device 2
253
- getTestCase(browserTest, '6', { location: locations[0], device: devices.firefox }),
254
- // Browser test, location 2, device 1
255
- getTestCase(browserTest, '7', { location: locations[1], device: devices.chrome }),
256
- // Browser test, location 2, device 2
257
- getTestCase(browserTest, '8', { location: locations[1], device: devices.firefox }),
258
- // Browser test, location 1, (timed out)
259
- getTestCase(browserTest, '9', { location: locations[0], timedOut: true }),
260
- // Browser test, location 1, (timed out)
261
- getTestCase(browserTest, '10', { location: locations[0], timedOut: true }),
262
- // Browser test, location 2, (timed out)
263
- getTestCase(browserTest, '11', { location: locations[1], timedOut: true }),
264
- // Browser test, location 2, (timed out)
265
- getTestCase(browserTest, '12', { location: locations[1], timedOut: true }),
266
- ];
267
- const caseNames = testCases.map((testCase) => testCase.$.name);
268
- const uniqueCaseNames = [...new Set(caseNames)];
269
- expect(uniqueCaseNames.length).toEqual(caseNames.length);
270
- expect(caseNames).toStrictEqual([
271
- // API tests.
272
- 'Test name - id: aaa-aaa-aaa - location: aws:eu-central-1',
273
- 'Test name - id: aaa-aaa-aaa - location: aws:eu-central-2',
274
- 'Test name - id: aaa-aaa-aaa - location: aws:eu-central-1 - result id: 3 (not yet received)',
275
- 'Test name - id: aaa-aaa-aaa - location: aws:eu-central-2 - result id: 4 (not yet received)',
276
- // Browser tests.
277
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-1 - device: chrome.laptop_large',
278
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-1 - device: firefox.laptop_large',
279
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-2 - device: chrome.laptop_large',
280
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-2 - device: firefox.laptop_large',
281
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-1 - result id: 9 (not yet received)',
282
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-1 - result id: 10 (not yet received)',
283
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-2 - result id: 11 (not yet received)',
284
- 'Test name - id: bbb-bbb-bbb - location: aws:eu-central-2 - result id: 12 (not yet received)',
285
- ]);
286
- });
287
- test('all columns are filled in the test report table', () => {
288
- const baseResult = (0, fixtures_1.getFailedBrowserResult)();
289
- const result = Object.assign(Object.assign({}, baseResult), { test: Object.assign(Object.assign({}, baseResult.test), { suite: 'tests.json' }) });
290
- reporter['resultEnd'](result, '', '');
291
- const testCase = reporter['json'].testsuites.testsuite[0].testcase[0];
292
- const name = 'Test name - id: abc-def-ghi - location: Location name - device: chrome.laptop_large';
293
- const failure = {
294
- $: {
295
- allowFailure: 'false',
296
- step: 'Assert',
297
- type: 'assertion',
298
- },
299
- _: 'Step failure',
300
- };
301
- expect(testCase.$).toHaveProperty('classname', 'tests.json'); // Suite
302
- expect(testCase.$).toHaveProperty('name', name); // Name
303
- expect(testCase.$).toHaveProperty('file', 'tests.json'); // Filename
304
- expect(testCase.failure).toStrictEqual([failure]); // Status
305
- expect(testCase.$).toHaveProperty('time', 20); // Duration
306
- });
307
- test('the icon in the Status column is correct (blocking vs. non-blocking)', () => {
308
- // Mimics how GitLab chooses the Status icon.
309
- const getStatusIcon = (testCase) => {
310
- if (testCase.failure.length > 0) {
311
- return '❌';
312
- }
313
- if (testCase.error.length > 0) {
314
- return '❗️';
315
- }
316
- if (testCase.skipped.length > 0) {
317
- return '⏩';
318
- }
319
- return '✅';
320
- };
321
- reporter['testTrigger'](globalTestMock, '', interfaces_1.ExecutionRule.SKIPPED, {});
322
- reporter['resultEnd'](Object.assign(Object.assign({}, (0, fixtures_1.getFailedBrowserResult)()), { executionRule: interfaces_1.ExecutionRule.BLOCKING }), '', '');
323
- reporter['resultEnd'](Object.assign(Object.assign({}, (0, fixtures_1.getFailedBrowserResult)()), { executionRule: interfaces_1.ExecutionRule.NON_BLOCKING }), '', '');
324
- reporter['resultEnd'](Object.assign(Object.assign({}, (0, fixtures_1.getBrowserResult)('', globalTestMock)), { executionRule: interfaces_1.ExecutionRule.BLOCKING }), '', '');
325
- const [testCaseSkipped, testCaseBlocking, testCaseNonBlocking, testCasePassed] = reporter['json'].testsuites.testsuite[0].testcase;
326
- expect(getStatusIcon(testCaseSkipped)).toBe('⏩');
327
- expect(getStatusIcon(testCaseBlocking)).toBe('❌');
328
- expect(getStatusIcon(testCaseNonBlocking)).toBe('❗️');
329
- expect(getStatusIcon(testCasePassed)).toBe('✅');
330
- });
331
- test('api errors are nicely rendered', () => {
332
- const errorMessage = JSON.stringify([
333
- {
334
- actual: 1234,
335
- operator: 'lessThan',
336
- target: 1000,
337
- type: 'responseTime',
338
- },
339
- ]);
340
- const failure = { code: 'INCORRECT_ASSERTION', message: errorMessage };
341
- const baseResult = (0, fixtures_1.getApiResult)('1', globalTestMock);
342
- const result = Object.assign(Object.assign({}, baseResult), { passed: false, result: Object.assign(Object.assign({}, baseResult.result), { failure }) });
343
- reporter['resultEnd'](result, '', '');
344
- const testCase = reporter['json'].testsuites.testsuite[0].testcase[0];
345
- expect(testCase.failure).toStrictEqual([
346
- {
347
- $: { step: 'Test name', type: 'INCORRECT_ASSERTION' },
348
- _: '- Assertion failed:\n ▶ responseTime should be less than 1000. Actual: 1234',
349
- },
350
- ]);
351
- });
352
- });
353
- //# sourceMappingURL=junit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"junit.test.js","sourceRoot":"","sources":["../../../../../src/commands/synthetics/__tests__/reporters/junit.test.ts"],"names":[],"mappings":"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"}
@@ -1,232 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- jest.unmock('chalk');
13
- const app_upload_1 = require("../../../reporters/mobile/app-upload");
14
- /* eslint-disable jest/no-conditional-expect */
15
- describe('AppUploadReporter', () => {
16
- let initialCiEnv;
17
- let simulatedTerminalOutput;
18
- let writeMock;
19
- let clearLine;
20
- let ttyReporter;
21
- beforeEach(() => {
22
- jest.useFakeTimers();
23
- initialCiEnv = process.env.CI;
24
- simulatedTerminalOutput = '';
25
- writeMock = jest.fn().mockImplementation((text) => {
26
- // Ignore show/hide cursor ANSI codes.
27
- if (text.match(/\u001b\[\?25(l|h)/)) {
28
- return;
29
- }
30
- simulatedTerminalOutput += text;
31
- });
32
- clearLine = jest.fn().mockImplementation(() => {
33
- const allLinesMinusLast = simulatedTerminalOutput.split('\n').slice(0, -1);
34
- allLinesMinusLast.push('');
35
- simulatedTerminalOutput = allLinesMinusLast.join('\n');
36
- });
37
- const ttyContext = {
38
- stdout: {
39
- isTTY: true,
40
- write: writeMock,
41
- clearLine,
42
- cursorTo: jest.fn(),
43
- moveCursor: jest.fn(),
44
- },
45
- stderr: {
46
- write: writeMock,
47
- },
48
- };
49
- ttyReporter = new app_upload_1.AppUploadReporter(ttyContext);
50
- });
51
- afterEach(() => {
52
- jest.useRealTimers();
53
- if (initialCiEnv !== undefined) {
54
- process.env.CI = initialCiEnv;
55
- }
56
- else {
57
- delete process.env.CI;
58
- }
59
- });
60
- describe('start', () => {
61
- test('outputs apps to upload', () => __awaiter(void 0, void 0, void 0, function* () {
62
- const appsToUpload = [
63
- {
64
- versionName: '1.0.0',
65
- appId: '123',
66
- appPath: '/path/to/app',
67
- },
68
- {
69
- versionName: '2.0.0',
70
- appId: '456',
71
- appPath: '/path/to/another/app',
72
- },
73
- ];
74
- ttyReporter.start(appsToUpload);
75
- const output = writeMock.mock.calls.map((c) => c[0]).join('\n');
76
- expect(output).toMatchSnapshot();
77
- writeMock.mockClear();
78
- ttyReporter.start(appsToUpload, true);
79
- const output2 = writeMock.mock.calls.map((c) => c[0]).join('\n');
80
- expect(output2).toMatchSnapshot();
81
- }));
82
- });
83
- describe('renderProgress', () => {
84
- test.each([false, true])('Outputs progress (in CI: %s)', (inCI) => __awaiter(void 0, void 0, void 0, function* () {
85
- if (inCI) {
86
- process.env.CI = 'true';
87
- }
88
- else {
89
- delete process.env.CI;
90
- }
91
- ttyReporter.renderProgress(2);
92
- expect(clearLine).not.toHaveBeenCalled();
93
- expect(simulatedTerminalOutput).toMatchSnapshot();
94
- ttyReporter.renderProgress(1);
95
- if (inCI) {
96
- // In CI, there in no spinning, so `stopping` the spinner (which happens when rendering a 2nd time) does not clear a line.
97
- expect(clearLine).not.toHaveBeenCalled();
98
- }
99
- else {
100
- expect(clearLine).toHaveBeenCalled();
101
- }
102
- expect(simulatedTerminalOutput).toMatchSnapshot();
103
- }));
104
- });
105
- describe('reportSuccess', () => {
106
- test.each([false, true])('Outputs success message (in CI: %s)', (inCI) => __awaiter(void 0, void 0, void 0, function* () {
107
- if (inCI) {
108
- process.env.CI = 'true';
109
- }
110
- else {
111
- delete process.env.CI;
112
- }
113
- ttyReporter.renderProgress(1);
114
- ttyReporter.reportSuccess();
115
- expect(simulatedTerminalOutput).toMatchSnapshot();
116
- if (inCI) {
117
- // In CI, there in no spinning, so `stopping` the spinner (which happens when rendering a 2nd time) does not clear a line.
118
- expect(clearLine).not.toHaveBeenCalled();
119
- }
120
- else {
121
- expect(clearLine).toHaveBeenCalled();
122
- }
123
- }));
124
- });
125
- describe('reportFailure', () => {
126
- test.each([false, true])('Outputs failure message (in CI: %s)', (inCI) => __awaiter(void 0, void 0, void 0, function* () {
127
- if (inCI) {
128
- process.env.CI = 'true';
129
- }
130
- else {
131
- delete process.env.CI;
132
- }
133
- ttyReporter.renderProgress(1);
134
- ttyReporter.reportFailure({
135
- versionName: '1.0.0',
136
- appId: '123',
137
- appPath: '/path/to/app',
138
- });
139
- expect(simulatedTerminalOutput).toMatchSnapshot();
140
- if (inCI) {
141
- // In CI, there in no spinning, so `stopping` the spinner (which happens when rendering a 2nd time) does not clear a line.
142
- expect(clearLine).not.toHaveBeenCalled();
143
- }
144
- else {
145
- expect(clearLine).toHaveBeenCalled();
146
- }
147
- }));
148
- });
149
- describe('endRendering', () => {
150
- test.each([false, true])('Ends rendering (in CI: %s)', (inCI) => __awaiter(void 0, void 0, void 0, function* () {
151
- if (inCI) {
152
- process.env.CI = 'true';
153
- }
154
- else {
155
- delete process.env.CI;
156
- }
157
- ttyReporter.renderProgress(1);
158
- expect(ttyReporter['spinner']).toBeDefined();
159
- ttyReporter.endRendering();
160
- expect(ttyReporter['spinner']).toBeUndefined();
161
- expect(simulatedTerminalOutput).toMatchSnapshot();
162
- if (inCI) {
163
- // In CI, there in no spinning, so `stopping` the spinner (which happens when rendering a 2nd time) does not clear a line.
164
- expect(clearLine).not.toHaveBeenCalled();
165
- }
166
- else {
167
- expect(clearLine).toHaveBeenCalled();
168
- }
169
- }));
170
- });
171
- describe('integrationTests', () => {
172
- test.each([false, true])('Outputs a series of successful uploads correctly (in CI: %s)', (inCI) => __awaiter(void 0, void 0, void 0, function* () {
173
- if (inCI) {
174
- process.env.CI = 'true';
175
- }
176
- else {
177
- delete process.env.CI;
178
- }
179
- ttyReporter.start([
180
- {
181
- versionName: '1.0.0',
182
- appId: '123',
183
- appPath: '/path/to/app',
184
- },
185
- {
186
- versionName: '2.0.0',
187
- appId: '456',
188
- appPath: '/path/to/another/app',
189
- },
190
- ]);
191
- expect(simulatedTerminalOutput).toMatchSnapshot();
192
- ttyReporter.renderProgress(2);
193
- expect(simulatedTerminalOutput).toMatchSnapshot();
194
- ttyReporter.renderProgress(1);
195
- expect(simulatedTerminalOutput).toMatchSnapshot();
196
- ttyReporter.reportSuccess();
197
- expect(simulatedTerminalOutput).toMatchSnapshot();
198
- }));
199
- });
200
- test.each([false, true])('Outputs a failure durings uploads correctly (in CI: %s)', (inCI) => __awaiter(void 0, void 0, void 0, function* () {
201
- if (inCI) {
202
- process.env.CI = 'true';
203
- }
204
- else {
205
- delete process.env.CI;
206
- }
207
- ttyReporter.start([
208
- {
209
- versionName: '1.0.0',
210
- appId: '123',
211
- appPath: '/path/to/app',
212
- },
213
- {
214
- versionName: '2.0.0',
215
- appId: '456',
216
- appPath: '/path/to/another/app',
217
- },
218
- ]);
219
- expect(simulatedTerminalOutput).toMatchSnapshot();
220
- ttyReporter.renderProgress(2);
221
- expect(simulatedTerminalOutput).toMatchSnapshot();
222
- ttyReporter.renderProgress(1);
223
- expect(simulatedTerminalOutput).toMatchSnapshot();
224
- ttyReporter.reportFailure({
225
- versionName: '2.0.0',
226
- appId: '456',
227
- appPath: '/path/to/another/app',
228
- });
229
- expect(simulatedTerminalOutput).toMatchSnapshot();
230
- }));
231
- });
232
- //# sourceMappingURL=app-upload.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-upload.test.js","sourceRoot":"","sources":["../../../../../../src/commands/synthetics/__tests__/reporters/mobile/app-upload.test.ts"],"names":[],"mappings":"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"}