From ff373baae886c28598f13d89df7058c882462cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20P?= Date: Mon, 9 Nov 2020 17:06:08 -0800 Subject: [PATCH] Don't try to upload assets if no session is available (#56) --- src/sauce-reporter.js | 6 +++++- tests/unit/src/sauce-reporter.spec.js | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/sauce-reporter.js b/src/sauce-reporter.js index 88bb924d..f84f2292 100644 --- a/src/sauce-reporter.js +++ b/src/sauce-reporter.js @@ -124,6 +124,11 @@ SauceReporter.sauceReporter = async (buildName, browserName, assets, failures) = console.warn('Failed to prepare test', e); } + if (undefined === sessionId || 0 === sessionId) { + console.error('Unable to retrieve test entry. Assets won\'t be uploaded.'); + return 'unable to retrieve test'; + } + // upload assets await Promise.all([ api.uploadJobAssets( @@ -162,7 +167,6 @@ SauceReporter.sauceReporter = async (buildName, browserName, assets, failures) = } console.log(`\nOpen job details page: https://app.${domain}/tests/${sessionId}\n`); - }; SauceReporter.mergeVideos = async (videos, target) => { diff --git a/tests/unit/src/sauce-reporter.spec.js b/tests/unit/src/sauce-reporter.spec.js index 1a68b8eb..8fb721e5 100644 --- a/tests/unit/src/sauce-reporter.spec.js +++ b/tests/unit/src/sauce-reporter.spec.js @@ -73,11 +73,24 @@ describe('SauceReporter', function () { it('should output err when upload failed', async function () { let consoleErrorSpy = jest.spyOn(global.console, 'error'); prepareAssetsSpy.mockReturnValue(['asset/one', 'asset/two']); - await SauceReporter.sauceReporter('build', 'browser', ['asset/one', 'asset/two']); + expect(await SauceReporter.sauceReporter('build', 'browser', ['asset/one', 'asset/two'], 0)).toBeUndefined(); expect(uploadJobAssetsSpy.mock.calls).toEqual([ ['a', {'files': ['asset/one', 'asset/two']}] ]); expect(consoleErrorSpy.mock.calls).toEqual([['some fake error']]); }); + it('should not push assets when no sessionId from SauceLabs API', async function () { + SauceLabs.default.mockImplementation(function () { + // eslint-disable-next-line require-await + this.listJobs = async () => ({ + jobs: [] + }); + this.uploadJobAssets = uploadJobAssetsSpy; + this.updateJob = async () => {}; + }); + + prepareAssetsSpy.mockReturnValue(['asset/one', 'asset/two']); + expect(await SauceReporter.sauceReporter('build', 'browser', ['asset/one', 'asset/two'], 0)).toBeDefined(); + }); }); });