Skip to content

Commit d1f0ea1

Browse files
authored
Fix failing circle-ci build job. (#4840)
* fix lint errors * update browser versions * remove problematic test cases * remove addtional files * fix errors in adagioBidAdapter.js and adagioBidAdapter_spec.js file * change karma config * change config * update timeout values * resolve merge conflict * -update karma\n-fix userIdSpec unit tests\n-update version of karma-browserstack-launcher to 1.4.0 * fix issue with userId_spec.js file * fix for realvu and sortable, potential fix for userId * resolve faulty merge * add a guideline to CONTRIBUGING.md and revert auction time back in userId_spec.js file
1 parent a95f911 commit d1f0ea1

11 files changed

+499
-298
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ When you are adding code to Prebid.js, or modifying code that isn't covered by a
5151
- If you need to check `adloader.loadExternalScript` in a test, use a `stub` rather than a `spy`. `spy`s trigger a network call which can result in a `script error` and cause unrelated unit tests to fail. `stub`s will let you gather information about the `adloader.loadExternalScript` call without affecting external resources
5252
- If your test makes ajax requests, use the global xhr stub in `test/mocks/xhr`. Do not use your own `sinon.useFakeXMLHttpRequest()` or `sinon.createFakeServer()`.
5353
- When writing tests you may use ES2015 syntax if desired
54+
- If your test relies on `Window` or `global` object, do not mutate that object directly. Instead, create a separate copy of that object and perform operations on that new copy.
5455

5556
### Test Examples
5657
Prebid.js already has many tests. Read them to see how Prebid.js is tested, and for inspiration:

browsers.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
"device": null,
88
"os": "Windows"
99
},
10-
"bs_edge_16_windows_10": {
10+
"bs_edge_18_windows_10": {
1111
"base": "BrowserStack",
1212
"os_version": "10",
1313
"browser": "edge",
14-
"browser_version": "16.0",
14+
"browser_version": "18.0",
1515
"device": null,
1616
"os": "Windows"
1717
},
@@ -23,43 +23,43 @@
2323
"device": null,
2424
"os": "Windows"
2525
},
26-
"bs_chrome_74_windows_10": {
26+
"bs_chrome_80_windows_10": {
2727
"base": "BrowserStack",
2828
"os_version": "10",
2929
"browser": "chrome",
30-
"browser_version": "74.0",
30+
"browser_version": "80.0",
3131
"device": null,
3232
"os": "Windows"
3333
},
34-
"bs_chrome_75_windows_10": {
34+
"bs_chrome_79_windows_10": {
3535
"base": "BrowserStack",
3636
"os_version": "10",
3737
"browser": "chrome",
38-
"browser_version": "75.0",
38+
"browser_version": "79.0",
3939
"device": null,
4040
"os": "Windows"
4141
},
42-
"bs_firefox_66_windows_10": {
42+
"bs_firefox_73_windows_10": {
4343
"base": "BrowserStack",
4444
"os_version": "10",
4545
"browser": "firefox",
46-
"browser_version": "66.0",
46+
"browser_version": "73.0",
4747
"device": null,
4848
"os": "Windows"
4949
},
50-
"bs_firefox_67_windows_10": {
50+
"bs_firefox_72_windows_10": {
5151
"base": "BrowserStack",
5252
"os_version": "10",
5353
"browser": "firefox",
54-
"browser_version": "67.0",
54+
"browser_version": "72.0",
5555
"device": null,
5656
"os": "Windows"
5757
},
58-
"bs_safari_11_mac_high_sierra": {
58+
"bs_safari_11_mac_catalina": {
5959
"base": "BrowserStack",
60-
"os_version": "High Sierra",
60+
"os_version": "Catalina",
6161
"browser": "safari",
62-
"browser_version": "11.1",
62+
"browser_version": "13.0",
6363
"device": null,
6464
"os": "OS X"
6565
},

gulpfile.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ function lint(done) {
6767
if (argv.nolint) {
6868
return done();
6969
}
70-
const isFixed = function(file) {
70+
const isFixed = function (file) {
7171
return file.eslint != null && file.eslint.fixed;
7272
}
73-
return gulp.src(['src/**/*.js', 'modules/**/*.js', 'test/**/*.js'], {base: './'})
74-
.pipe(gulpif(argv.nolintfix, eslint(), eslint({fix: true})))
73+
return gulp.src(['src/**/*.js', 'modules/**/*.js', 'test/**/*.js'], { base: './' })
74+
.pipe(gulpif(argv.nolintfix, eslint(), eslint({ fix: true })))
7575
.pipe(eslint.format('stylish'))
7676
.pipe(eslint.failAfterError())
7777
.pipe(gulpif(isFixed, gulp.dest('./')));
@@ -160,7 +160,7 @@ function nodeBundle(modules) {
160160
.on('error', (err) => {
161161
reject(err);
162162
})
163-
.pipe(through.obj(function(file, enc, done) {
163+
.pipe(through.obj(function (file, enc, done) {
164164
resolve(file.contents.toString(enc));
165165
done();
166166
}));
@@ -199,7 +199,7 @@ function bundle(dev, moduleArr) {
199199
return gulp.src(
200200
entries
201201
)
202-
.pipe(gulpif(dev, sourcemaps.init({loadMaps: true})))
202+
.pipe(gulpif(dev, sourcemaps.init({ loadMaps: true })))
203203
.pipe(concat(outputFileName))
204204
.pipe(gulpif(!argv.manualEnable, footer('\n<%= global %>.processQueue();', {
205205
global: prebid.globalVarName
@@ -239,7 +239,7 @@ function test(done) {
239239
}
240240

241241
//run mock-server
242-
const mockServer = spawn('node', ['./test/mock-server/index.js', '--port='+mockServerPort]);
242+
const mockServer = spawn('node', ['./test/mock-server/index.js', '--port=' + mockServerPort]);
243243
mockServer.stdout.on('data', (data) => {
244244
console.log(`stdout: ${data}`);
245245
});
@@ -273,7 +273,7 @@ function test(done) {
273273
}
274274

275275
function newKarmaCallback(done) {
276-
return function(exitCode) {
276+
return function (exitCode) {
277277
if (exitCode) {
278278
done(new Error('Karma tests failed with exit code ' + exitCode));
279279
if (argv.browserstack) {
@@ -296,7 +296,7 @@ function testCoverage(done) {
296296
function coveralls() { // 2nd arg is a dependency: 'test' must be finished
297297
// first send results of istanbul's test coverage to coveralls.io.
298298
return gulp.src('gulpfile.js', { read: false }) // You have to give it a file, but you don't
299-
// have to read it.
299+
// have to read it.
300300
.pipe(shell('cat build/coverage/lcov.info | node_modules/coveralls/bin/coveralls.js'));
301301
}
302302

@@ -326,10 +326,10 @@ function setupE2e(done) {
326326
done();
327327
}
328328

329-
gulp.task('updatepath', function(){
329+
gulp.task('updatepath', function () {
330330
return gulp.src(['build/dist/*.js'])
331-
.pipe(replace('https://ib.adnxs.com/ut/v3/prebid', 'http://' + host + ':' + mockServerPort + '/'))
332-
.pipe(gulp.dest('build/dist'));
331+
.pipe(replace('https://ib.adnxs.com/ut/v3/prebid', 'http://' + host + ':' + mockServerPort + '/'))
332+
.pipe(gulp.dest('build/dist'));
333333
});
334334

335335
// support tasks

karma.conf.maker.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function setBrowsers(karmaConf, browserstack) {
8888
karmaConf.browserStack.startTunnel = false;
8989
karmaConf.browserStack.tunnelIdentifier = process.env.BROWSERSTACK_LOCAL_IDENTIFIER;
9090
}
91-
karmaConf.customLaunchers = require('./browsers.json')
91+
karmaConf.customLaunchers = require('./browsers.json');
9292
karmaConf.browsers = Object.keys(karmaConf.customLaunchers);
9393
} else {
9494
var isDocker = require('is-docker')();
@@ -162,11 +162,11 @@ module.exports = function(codeCoverage, browserstack, watchMode, file) {
162162
// Continuous Integration mode
163163
// if true, Karma captures browsers, runs the tests and exits
164164
singleRun: !watchMode,
165-
browserDisconnectTimeout: 10000, // default 2000
166-
browserDisconnectTolerance: 1, // default 0
167-
browserNoActivityTimeout: 4 * 60 * 1000, // default 10000
168-
captureTimeout: 4 * 60 * 1000, // default 60000,
169-
processKillTimeout: 10000, // default 2000
165+
browserDisconnectTimeout: 3e5, // default 2000
166+
browserNoActivityTimeout: 3e5, // default 10000
167+
captureTimeout: 3e5, // default 60000,
168+
browserDisconnectTolerance: 3,
169+
concurrency: 5,
170170

171171
plugins: plugins
172172
}

modules/adagioBidAdapter.js

Lines changed: 46 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ if (canAccessTopWindow()) {
8383
}
8484

8585
const _features = {
86-
getPrintNumber: function(adUnitCode) {
86+
getPrintNumber: function (adUnitCode) {
8787
const adagioAdUnit = _getOrAddAdagioAdUnit(adUnitCode);
8888
return adagioAdUnit.printNumber || 1;
8989
},
9090

91-
getPageDimensions: function() {
91+
getPageDimensions: function () {
9292
const viewportDims = _features.getViewPortDimensions().split('x');
9393
const w = utils.getWindowTop();
9494
const body = w.document.body;
@@ -101,7 +101,7 @@ const _features = {
101101
return viewportDims[0] + 'x' + pageHeight;
102102
},
103103

104-
getViewPortDimensions: function() {
104+
getViewPortDimensions: function () {
105105
let viewPortWidth;
106106
let viewPortHeight;
107107
const w = utils.getWindowTop();
@@ -118,7 +118,7 @@ const _features = {
118118
return viewPortWidth + 'x' + viewPortHeight;
119119
},
120120

121-
isDomLoading: function() {
121+
isDomLoading: function () {
122122
const w = utils.getWindowTop();
123123
let performance = w.performance || w.msPerformance || w.webkitPerformance || w.mozPerformance;
124124
let domLoading = -1;
@@ -130,7 +130,7 @@ const _features = {
130130
return domLoading;
131131
},
132132

133-
getSlotPosition: function(element) {
133+
getSlotPosition: function (element) {
134134
if (!element) return '';
135135

136136
const w = utils.getWindowTop();
@@ -164,11 +164,11 @@ const _features = {
164164
return position.x + 'x' + position.y;
165165
},
166166

167-
getTimestamp: function() {
167+
getTimestamp: function () {
168168
return Math.floor(new Date().getTime() / 1000) - new Date().getTimezoneOffset() * 60;
169169
},
170170

171-
getDevice: function() {
171+
getDevice: function () {
172172
if (!canAccessTopWindow()) return false;
173173
const w = utils.getWindowTop();
174174
const ua = w.navigator.userAgent;
@@ -182,14 +182,14 @@ const _features = {
182182
return 2; // personal computers
183183
},
184184

185-
getBrowser: function() {
185+
getBrowser: function () {
186186
const w = utils.getWindowTop();
187187
const ua = w.navigator.userAgent;
188188
const uaLowerCase = ua.toLowerCase();
189189
return /Edge\/\d./i.test(ua) ? 'edge' : uaLowerCase.indexOf('chrome') > 0 ? 'chrome' : uaLowerCase.indexOf('firefox') > 0 ? 'firefox' : uaLowerCase.indexOf('safari') > 0 ? 'safari' : uaLowerCase.indexOf('opera') > 0 ? 'opera' : uaLowerCase.indexOf('msie') > 0 || w.MSStream ? 'ie' : 'unknow';
190190
},
191191

192-
getOS: function() {
192+
getOS: function () {
193193
const w = window.top;
194194
const ua = w.navigator.userAgent;
195195
const uaLowerCase = ua.toLowerCase();
@@ -198,9 +198,11 @@ const _features = {
198198
}
199199

200200
function _pushInAdagioQueue(ob) {
201-
if (!canAccessTopWindow()) return;
202-
const w = utils.getWindowTop();
203-
w.ADAGIO.queue.push(ob);
201+
try {
202+
if (!canAccessTopWindow()) return;
203+
const w = utils.getWindowTop();
204+
w.ADAGIO.queue.push(ob);
205+
} catch (e) {}
204206
};
205207

206208
function _getOrAddAdagioAdUnit(adUnitCode) {
@@ -342,42 +344,45 @@ export const spec = {
342344

343345
supportedMediaType: SUPPORTED_MEDIA_TYPES,
344346

345-
isBidRequestValid: function(bid) {
347+
isBidRequestValid: function (bid) {
346348
const { adUnitCode, auctionId, sizes, bidder, params, mediaTypes } = bid;
347349
const { organizationId, site, placement, adUnitElementId } = bid.params;
348350
let isValid = false;
349351

350-
if (canAccessTopWindow()) {
351-
const w = utils.getWindowTop();
352-
w.ADAGIO = w.ADAGIO || {};
353-
w.ADAGIO.adUnits = w.ADAGIO.adUnits || {};
354-
w.ADAGIO.pbjsAdUnits = w.ADAGIO.pbjsAdUnits || [];
355-
isValid = !!(organizationId && site && placement && adUnitElementId);
356-
const tempAdUnits = w.ADAGIO.pbjsAdUnits.filter((adUnit) => adUnit.code !== adUnitCode);
357-
tempAdUnits.push({
358-
code: adUnitCode,
359-
sizes: (mediaTypes && mediaTypes.banner && Array.isArray(mediaTypes.banner.sizes)) ? mediaTypes.banner.sizes : sizes,
360-
bids: [{
361-
bidder,
362-
params
363-
}]
364-
});
365-
w.ADAGIO.pbjsAdUnits = tempAdUnits;
366-
367-
if (isValid === true) {
368-
let printNumber = _computePrintNumber(adUnitCode);
369-
w.ADAGIO.adUnits[adUnitCode] = {
370-
auctionId: auctionId,
371-
pageviewId: _getPageviewId(),
372-
printNumber
373-
};
352+
try {
353+
if (canAccessTopWindow()) {
354+
const w = utils.getWindowTop();
355+
w.ADAGIO = w.ADAGIO || {};
356+
w.ADAGIO.adUnits = w.ADAGIO.adUnits || {};
357+
w.ADAGIO.pbjsAdUnits = w.ADAGIO.pbjsAdUnits || [];
358+
isValid = !!(organizationId && site && placement && adUnitElementId);
359+
const tempAdUnits = w.ADAGIO.pbjsAdUnits.filter((adUnit) => adUnit.code !== adUnitCode);
360+
tempAdUnits.push({
361+
code: adUnitCode,
362+
sizes: (mediaTypes && mediaTypes.banner && Array.isArray(mediaTypes.banner.sizes)) ? mediaTypes.banner.sizes : sizes,
363+
bids: [{
364+
bidder,
365+
params
366+
}]
367+
});
368+
w.ADAGIO.pbjsAdUnits = tempAdUnits;
369+
370+
if (isValid === true) {
371+
let printNumber = _computePrintNumber(adUnitCode);
372+
w.ADAGIO.adUnits[adUnitCode] = {
373+
auctionId: auctionId,
374+
pageviewId: _getPageviewId(),
375+
printNumber
376+
};
377+
}
374378
}
379+
} catch (e) {
380+
return isValid;
375381
}
376-
377382
return isValid;
378383
},
379384

380-
buildRequests: function(validBidRequests, bidderRequest) {
385+
buildRequests: function (validBidRequests, bidderRequest) {
381386
// AdagioBidAdapter works when window.top can be reached only
382387
if (!bidderRequest.refererInfo.reachedTop) return [];
383388

@@ -427,7 +432,7 @@ export const spec = {
427432
return requests;
428433
},
429434

430-
interpretResponse: function(serverResponse, bidRequest) {
435+
interpretResponse: function (serverResponse, bidRequest) {
431436
let bidResponses = [];
432437
try {
433438
const response = serverResponse.body;
@@ -460,7 +465,7 @@ export const spec = {
460465
return bidResponses;
461466
},
462467

463-
getUserSyncs: function(syncOptions, serverResponses) {
468+
getUserSyncs: function (syncOptions, serverResponses) {
464469
if (!serverResponses.length || serverResponses[0].body === '' || !serverResponses[0].body.userSyncs) {
465470
return false;
466471
}

0 commit comments

Comments
 (0)