Skip to content

Commit 53608cf

Browse files
author
Shahak Yosef
committed
Merged PR 221263: Fix test results
This PR does a few things: 1. Fix broken get theme test 2. Remove noisy unnecessary logs 3. Remove unused headless chrome browser when [kjhtml reporter](https://www.npmjs.com/package/karma-jasmine-html-reporter) is used (using a headless browser for UI debugging doesn't make sense) 4. Fix test failures not leading to Azure DevOps build pipeline failure (align with [official documentation](http://karma-runner.github.io/6.3/dev/public-api.html)) 5. Add JUnit test results reported so that Azure DevOps can report test failures nicely (base don front end implementation) You can see JUnit yourselves by going to the failed build and clicking on the tests tab like you do in the front end or backend but here is a picture ![image.png](https://powerbi.visualstudio.com/4c7b5adb-c2d0-4f18-b23c-edc4ac30f4e1/_apis/git/repositories/1dd63332-e003-46a3-ac6f-70213a1bcc2e/pullRequests/221263/attachments/image.png)
1 parent 5a90d7d commit 53608cf

File tree

9 files changed

+24
-22
lines changed

9 files changed

+24
-22
lines changed

.pipelines/pipeline.user.windows.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ test:
119119
command: '.pipelines\cdpx_run_ps.cmd'
120120
testresults:
121121
- title: 'powerbi-javascript test results'
122-
type: 'jasmine'
123-
from: 'reports'
122+
type: 'junit'
124123
include:
125-
- "**coverage/**/index.html"
124+
- ".\\tmp\\testresults.xml"

gulpfile.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,9 @@ gulp.task('test:js', 'Run js tests', function (done) {
220220
configFile: __dirname + '/karma.conf.js',
221221
singleRun: argv.watch ? false : true,
222222
captureTimeout: argv.timeout || 60000
223-
}, function () {
223+
}, function (exitStatus) {
224224
done();
225+
process.exit(exitStatus);
225226
})
226227
.on('browser_register', (browser) => {
227228
if (argv.chrome) {

karma.conf.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module.exports = function (config) {
2323
{ pattern: './test/**/*.html', served: true, included: false }
2424
],
2525
exclude: [],
26-
reporters: argv.debug ? ['spec', 'kjhtml'] : ['spec', 'coverage', 'kjhtml'],
26+
reporters: argv.chrome ? ['coverage', 'kjhtml'] : ['spec', 'coverage', 'junit'],
2727
autoWatch: true,
2828
browsers: [browserName],
2929
browserNoActivityTimeout: 300000,
@@ -34,11 +34,12 @@ module.exports = function (config) {
3434
'karma-spec-reporter',
3535
'karma-phantomjs-launcher',
3636
'karma-coverage',
37-
'karma-jasmine-html-reporter'
37+
'karma-jasmine-html-reporter',
38+
'karma-junit-reporter'
3839
],
3940
customLaunchers: {
4041
'Chrome_headless': {
41-
base: argv.debug ? 'Chrome' : 'ChromeHeadless',
42+
base: 'Chrome',
4243
flags: flags.concat("--no-sandbox", "--window-size=800,800"),
4344
},
4445
},
@@ -49,11 +50,15 @@ module.exports = function (config) {
4950
{ type: 'text-summary' }
5051
]
5152
},
53+
junitReporter: {
54+
outputDir: 'tmp',
55+
outputFile: 'testresults.xml',
56+
useBrowserName: false
57+
},
5258
retryLimit: 0,
5359
logLevel: argv.debug ? config.LOG_DEBUG : config.LOG_INFO,
5460
client: {
5561
clearContext: false, // leave Jasmine Spec Runner output visible in browser
56-
args: argv.logMessages ? ['logMessages'] : []
5762
}
5863
});
5964
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"prestart": "cd demo && npm install",
1717
"test": "gulp test",
1818
"gulp": "gulp",
19-
"tests": "npm test -- --chrome --watch --debug"
19+
"tests": "npm test -- --chrome --watch"
2020
},
2121
"keywords": [
2222
"microsoft",
@@ -68,6 +68,7 @@
6868
"karma-firefox-launcher": "^1.2.0",
6969
"karma-jasmine": "4.0.1",
7070
"karma-jasmine-html-reporter": "1.7.0",
71+
"karma-junit-reporter": "^2.0.1",
7172
"karma-phantomjs-launcher": "^1.0.4",
7273
"karma-spec-reporter": "0.0.32",
7374
"moment": "^2.14.1",

test/SDK-to-HPM.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2072,7 +2072,7 @@ describe('SDK-to-HPM', function () {
20722072
spyHpm.get.and.returnValue(Promise.resolve(testData.response));
20732073
try {
20742074
await report.getTheme();
2075-
expect(spyHpm.put).toHaveBeenCalledWith('/report/theme', expectedHeaders, jasmine.any(Object));
2075+
expect(spyHpm.get).toHaveBeenCalledWith('/report/theme', expectedHeaders, jasmine.any(Object));
20762076
} catch (error) {
20772077
console.log("getTheme failed with", error);
20782078
fail("getTheme failed");

test/SDK-to-MockApp.spec.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as models from 'powerbi-models';
1111
import * as factories from '../src/factories';
1212
import * as util from '../src/util';
1313
import { spyApp, setupEmbedMockApp } from './utility/mockEmbed';
14-
import { logMessages, iframeSrc } from './constsants';
14+
import { iframeSrc } from './constsants';
1515

1616
describe('SDK-to-MockApp', function () {
1717
let element: HTMLDivElement;
@@ -29,8 +29,7 @@ describe('SDK-to-MockApp', function () {
2929

3030
beforeEach(async function () {
3131
powerbi = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory, {
32-
wpmpName: 'SDK-to-MockApp HostWpmp',
33-
logMessages
32+
wpmpName: 'SDK-to-MockApp HostWpmp'
3433
});
3534
element = document.createElement('div');
3635
element.id = "reportContainer1";
@@ -49,7 +48,7 @@ describe('SDK-to-MockApp', function () {
4948
(<any>powerbi.wpmp).eventSourceOverrideWindow = iframe.contentWindow;
5049
// Register Iframe side
5150
let hpmPostSpy = spyOn(powerbi.hpm, "post").and.returnValue(Promise.resolve(<any>{}));
52-
iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, logMessages, 'SDK-to-MockApp IframeWpmp');
51+
iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, 'SDK-to-MockApp IframeWpmp');
5352

5453
await new Promise<void>((resolve, _reject) => {
5554
iframe.addEventListener('load', () => {
@@ -542,7 +541,7 @@ describe('SDK-to-MockApp', function () {
542541
document.body.appendChild(element2);
543542
const report2 = <report.Report>powerbi.embed(element2, embedConfiguration);
544543
const iframe2 = element2.getElementsByTagName('iframe')[0];
545-
setupEmbedMockApp(iframe2.contentWindow, window, logMessages, 'SDK-to-MockApp IframeWpmp2');
544+
setupEmbedMockApp(iframe2.contentWindow, window, 'SDK-to-MockApp IframeWpmp2');
546545
await new Promise<void>((resolve, _reject) => {
547546
iframe2.addEventListener('load', () => {
548547
resolve(null);

test/constsants.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ declare global {
77
}
88
}
99

10-
export const logMessages = (window.__karma__.config.args[0] === 'logMessages');
11-
1210
export const iframeSrc = "base/test/utility/noop.html";
1311
window.onbeforeunload = null;
1412

test/protocol.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { WindowPostMessageProxy } from 'window-post-message-proxy';
44
import { HttpPostMessage } from 'http-post-message';
55
import { spyApp, setupEmbedMockApp } from './utility/mockEmbed';
66
import { hpmFactory, routerFactory, wpmpFactory } from '../src/factories';
7-
import { iframeSrc, logMessages } from './constsants';
7+
import { iframeSrc } from './constsants';
88
import * as models from 'powerbi-models';
99

1010
describe('Protocol', function () {
@@ -27,10 +27,10 @@ describe('Protocol', function () {
2727
await new Promise(resolve => iframe.addEventListener('load', () => resolve(null)));
2828

2929
// Register Iframe side
30-
iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, logMessages, 'ProtocolMockAppWpmp');
30+
iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, 'ProtocolMockAppWpmp');
3131

3232
// Register SDK side WPMP
33-
wpmp = wpmpFactory('HostProxyDefaultNoHandlers', logMessages, iframe.contentWindow);
33+
wpmp = wpmpFactory('HostProxyDefaultNoHandlers',false, iframe.contentWindow);
3434
hpm = hpmFactory(wpmp, iframe.contentWindow, 'testVersion');
3535

3636
const router = routerFactory(wpmp);

test/utility/mockEmbed.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import * as models from 'powerbi-models';
99

1010
export const spyApp = mockAppSpyObj;
1111

12-
export function setupEmbedMockApp(iframeContentWindow: Window, parentWindow: Window, logMessages: boolean, name: string = 'MockAppWindowPostMessageProxy'): HttpPostMessage {
12+
export function setupEmbedMockApp(iframeContentWindow: Window, parentWindow: Window, name: string = 'MockAppWindowPostMessageProxy'): HttpPostMessage {
1313
const parent = parentWindow || iframeContentWindow.parent;
1414
const wpmp = new WindowPostMessageProxy({
1515
processTrackingProperties: {
@@ -19,7 +19,6 @@ export function setupEmbedMockApp(iframeContentWindow: Window, parentWindow: Win
1919
isErrorMessage: HttpPostMessage.isErrorMessage,
2020
receiveWindow: iframeContentWindow,
2121
name,
22-
logMessages
2322
});
2423
const hpm = new HttpPostMessage(wpmp, {
2524
'origin': 'reportEmbedMock',

0 commit comments

Comments
 (0)