prebid.js 9.46.0 → 9.48.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 (325) hide show
  1. package/.github/codeql/queries/jsonRequestContentType.ql +18 -0
  2. package/AGENTS.md +42 -0
  3. package/CLAUDE.md +1 -0
  4. package/babelConfig.js +1 -1
  5. package/dist/33acrossAnalyticsAdapter.js +1 -1
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/33acrossIdSystem.js +1 -1
  8. package/dist/BTBidAdapter.js +1 -1
  9. package/dist/adagioAnalyticsAdapter.js +1 -1
  10. package/dist/adagioBidAdapter.js +1 -1
  11. package/dist/adagioUtils.js +1 -1
  12. package/dist/addefendBidAdapter.js +1 -1
  13. package/dist/adgenerationBidAdapter.js +1 -1
  14. package/dist/adlooxRtdProvider.js +1 -1
  15. package/dist/adqueryBidAdapter.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adstirBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/advangUtils.js +1 -1
  20. package/dist/adverxoBidAdapter.js +1 -1
  21. package/dist/adxcgAnalyticsAdapter.js +1 -1
  22. package/dist/adxcgBidAdapter.js +1 -1
  23. package/dist/adyoulikeBidAdapter.js +1 -1
  24. package/dist/agmaAnalyticsAdapter.js +1 -1
  25. package/dist/ajaBidAdapter.js +1 -1
  26. package/dist/amxBidAdapter.js +1 -1
  27. package/dist/amxIdSystem.js +1 -1
  28. package/dist/aniviewBidAdapter.js +1 -1
  29. package/dist/appierAnalyticsAdapter.js +1 -1
  30. package/dist/appnexusBidAdapter.js +1 -1
  31. package/dist/asoBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/beopBidAdapter.js +1 -1
  34. package/dist/bidglassBidAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bitmediaBidAdapter.js +1 -1
  37. package/dist/blueBidAdapter.js +1 -1
  38. package/dist/blueUtils.js +1 -0
  39. package/dist/bmsBidAdapter.js +1 -1
  40. package/dist/bridBidAdapter.js +1 -1
  41. package/dist/bridgeuppBidAdapter.js +1 -1
  42. package/dist/bridgewellBidAdapter.js +1 -1
  43. package/dist/brightMountainMediaBidAdapter.js +1 -1
  44. package/dist/browsiUtils.js +1 -1
  45. package/dist/carodaBidAdapter.js +1 -1
  46. package/dist/chtnwBidAdapter.js +1 -1
  47. package/dist/chunk-core.js +1 -1
  48. package/dist/concertBidAdapter.js +1 -1
  49. package/dist/connectadBidAdapter.js +1 -1
  50. package/dist/consumableBidAdapter.js +1 -1
  51. package/dist/contxtfulBidAdapter.js +1 -1
  52. package/dist/conversantAnalyticsAdapter.js +1 -1
  53. package/dist/conversantBidAdapter.js +1 -1
  54. package/dist/craftBidAdapter.js +1 -1
  55. package/dist/criteoBidAdapter.js +1 -1
  56. package/dist/cwireBidAdapter.js +1 -1
  57. package/dist/czechAdIdSystem.js +1 -1
  58. package/dist/dailymotionBidAdapter.js +1 -1
  59. package/dist/debugging-standalone.js +1 -1
  60. package/dist/dependencies.json +16 -2
  61. package/dist/dspxBidAdapter.js +1 -1
  62. package/dist/dxkultureBidAdapter.js +1 -1
  63. package/dist/dynamicAdBoostRtdProvider.js +1 -1
  64. package/dist/eplanningBidAdapter.js +1 -1
  65. package/dist/eskimiBidAdapter.js +1 -1
  66. package/dist/euidIdSystem.js +1 -1
  67. package/dist/exadsBidAdapter.js +1 -1
  68. package/dist/excoBidAdapter.js +1 -1
  69. package/dist/feedadBidAdapter.js +1 -1
  70. package/dist/finativeBidAdapter.js +1 -1
  71. package/dist/freewheel-sspBidAdapter.js +1 -1
  72. package/dist/gmosspBidAdapter.js +1 -1
  73. package/dist/gptUtils.js +1 -1
  74. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  75. package/dist/greenbidsBidAdapter.js +1 -1
  76. package/dist/greenbidsRtdProvider.js +1 -1
  77. package/dist/gridBidAdapter.js +1 -1
  78. package/dist/gumgumBidAdapter.js +1 -1
  79. package/dist/h12mediaBidAdapter.js +1 -1
  80. package/dist/hypelabBidAdapter.js +1 -1
  81. package/dist/id5AnalyticsAdapter.js +1 -1
  82. package/dist/id5IdSystem.js +1 -1
  83. package/dist/imdsBidAdapter.js +1 -1
  84. package/dist/improvedigitalBidAdapter.js +1 -1
  85. package/dist/inmobiBidAdapter.js +1 -1
  86. package/dist/insticatorBidAdapter.js +1 -1
  87. package/dist/intentIqAnalyticsAdapter.js +1 -1
  88. package/dist/ixBidAdapter.js +1 -1
  89. package/dist/jixieBidAdapter.js +1 -1
  90. package/dist/justpremiumBidAdapter.js +1 -1
  91. package/dist/kargoBidAdapter.js +1 -1
  92. package/dist/kimberliteBidAdapter.js +1 -1
  93. package/dist/konduitAnalyticsAdapter.js +1 -1
  94. package/dist/kueezBidAdapter.js +1 -1
  95. package/dist/lassoBidAdapter.js +1 -1
  96. package/dist/lifestreetBidAdapter.js +1 -1
  97. package/dist/liveIntentId.js +1 -1
  98. package/dist/logicadBidAdapter.js +1 -1
  99. package/dist/loglyliftBidAdapter.js +1 -1
  100. package/dist/luceadBidAdapter.js +1 -1
  101. package/dist/luponmediaBidAdapter.js +1 -1
  102. package/dist/mabidderBidAdapter.js +1 -1
  103. package/dist/madsenseBidAdapter.js +1 -1
  104. package/dist/magniteAnalyticsAdapter.js +1 -1
  105. package/dist/malltvAnalyticsAdapter.js +1 -1
  106. package/dist/marsmediaBidAdapter.js +1 -1
  107. package/dist/mediafuseBidAdapter.js +1 -1
  108. package/dist/medianetBidAdapter.js +1 -1
  109. package/dist/medianetUtils.js +1 -1
  110. package/dist/mediasquareBidAdapter.js +1 -1
  111. package/dist/mgidBidAdapter.js +1 -1
  112. package/dist/missenaBidAdapter.js +1 -1
  113. package/dist/mobilefuseBidAdapter.js +1 -1
  114. package/dist/nativeryBidAdapter.js +1 -0
  115. package/dist/nextMillenniumBidAdapter.js +1 -1
  116. package/dist/nexx360Utils.js +1 -1
  117. package/dist/nobidAnalyticsAdapter.js +1 -1
  118. package/dist/nobidBidAdapter.js +1 -1
  119. package/dist/nodalsAiRtdProvider.js +1 -1
  120. package/dist/not-for-prod/prebid.js +187 -184
  121. package/dist/oguryBidAdapter.js +1 -1
  122. package/dist/onetagBidAdapter.js +1 -1
  123. package/dist/ooloAnalyticsAdapter.js +1 -1
  124. package/dist/openxBidAdapter.js +1 -1
  125. package/dist/optidigitalBidAdapter.js +1 -1
  126. package/dist/orbidderBidAdapter.js +1 -1
  127. package/dist/outbrainBidAdapter.js +1 -1
  128. package/dist/pinkLionBidAdapter.js +1 -0
  129. package/dist/pixfutureBidAdapter.js +1 -1
  130. package/dist/prebidServerBidAdapter.js +1 -1
  131. package/dist/priceFloors.js +1 -1
  132. package/dist/publinkIdSystem.js +1 -1
  133. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  134. package/dist/pubmaticBidAdapter.js +1 -1
  135. package/dist/pubmaticRtdProvider.js +1 -1
  136. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  137. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  138. package/dist/pubxaiRtdProvider.js +1 -1
  139. package/dist/pxyzBidAdapter.js +1 -1
  140. package/dist/quantcastBidAdapter.js +1 -1
  141. package/dist/readpeakBidAdapter.js +1 -1
  142. package/dist/relaidoBidAdapter.js +1 -1
  143. package/dist/retailspotBidAdapter.js +1 -1
  144. package/dist/rhythmoneBidAdapter.js +1 -1
  145. package/dist/riseUtils.js +1 -1
  146. package/dist/rtbhouseBidAdapter.js +1 -1
  147. package/dist/rubiconBidAdapter.js +1 -1
  148. package/dist/seedingAllianceBidAdapter.js +1 -1
  149. package/dist/seedtagBidAdapter.js +1 -1
  150. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  151. package/dist/sharethroughBidAdapter.js +1 -1
  152. package/dist/showheroes-bsBidAdapter.js +1 -1
  153. package/dist/smaatoBidAdapter.js +1 -1
  154. package/dist/smartadserverBidAdapter.js +1 -1
  155. package/dist/smartxBidAdapter.js +1 -1
  156. package/dist/smilewantedBidAdapter.js +1 -1
  157. package/dist/snigelBidAdapter.js +1 -1
  158. package/dist/sonobiBidAdapter.js +1 -1
  159. package/dist/sovrnBidAdapter.js +1 -1
  160. package/dist/sparteoBidAdapter.js +1 -1
  161. package/dist/sspBCBidAdapter.js +1 -1
  162. package/dist/stroeerCoreBidAdapter.js +1 -1
  163. package/dist/stvBidAdapter.js +1 -1
  164. package/dist/sublimeBidAdapter.js +1 -1
  165. package/dist/taboolaBidAdapter.js +1 -1
  166. package/dist/tappxBidAdapter.js +1 -1
  167. package/dist/targetVideoBidAdapter.js +1 -1
  168. package/dist/teadsBidAdapter.js +1 -1
  169. package/dist/terceptAnalyticsAdapter.js +1 -1
  170. package/dist/themoneytizerBidAdapter.js +1 -1
  171. package/dist/trionBidAdapter.js +1 -1
  172. package/dist/tripleliftBidAdapter.js +1 -1
  173. package/dist/ttdBidAdapter.js +1 -1
  174. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  175. package/dist/uid2IdSystem.js +1 -1
  176. package/dist/underdogmediaBidAdapter.js +1 -1
  177. package/dist/undertoneBidAdapter.js +1 -1
  178. package/dist/unifiedIdSystem.js +1 -1
  179. package/dist/unrulyBidAdapter.js +1 -1
  180. package/dist/userId.js +1 -1
  181. package/dist/vidazooUtils.js +1 -1
  182. package/dist/videobyteBidAdapter.js +1 -1
  183. package/dist/visxBidAdapter.js +1 -1
  184. package/dist/vuukleBidAdapter.js +1 -1
  185. package/dist/weboramaRtdProvider.js +1 -1
  186. package/dist/widespaceBidAdapter.js +1 -1
  187. package/dist/winrBidAdapter.js +1 -1
  188. package/dist/xeUtils.js +1 -1
  189. package/dist/yahooAdsBidAdapter.js +1 -1
  190. package/dist/yandexBidAdapter.js +1 -1
  191. package/dist/yieldmoBidAdapter.js +1 -1
  192. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  193. package/eslint.config.js +1 -3
  194. package/gulpHelpers.js +3 -6
  195. package/gulpfile.js +25 -24
  196. package/karma.conf.maker.js +1 -3
  197. package/libraries/advangUtils/index.js +3 -4
  198. package/libraries/blueUtils/bidderUtils.js +113 -0
  199. package/libraries/browsiUtils/browsiUtils.js +1 -2
  200. package/libraries/gptUtils/gptUtils.js +1 -2
  201. package/libraries/liveIntentId/shared.js +4 -0
  202. package/libraries/xeUtils/bidderUtils.js +3 -4
  203. package/modules/adagioBidAdapter.js +1 -2
  204. package/modules/addefendBidAdapter.md +1 -1
  205. package/modules/adtrgtmeBidAdapter.js +6 -8
  206. package/modules/aduptechBidAdapter.md +1 -1
  207. package/modules/adverxoBidAdapter.js +3 -3
  208. package/modules/blueBidAdapter.js +24 -104
  209. package/modules/bmsBidAdapter.js +25 -105
  210. package/modules/concertBidAdapter.md +1 -1
  211. package/modules/contxtfulBidAdapter.js +56 -10
  212. package/modules/conversantBidAdapter.js +0 -58
  213. package/modules/cwireBidAdapter.js +8 -0
  214. package/modules/czechAdIdSystem.js +13 -3
  215. package/modules/dynamicAdBoostRtdProvider.js +16 -33
  216. package/modules/dynamicAdBoostRtdProvider.md +1 -6
  217. package/modules/ixBidAdapter.js +2 -3
  218. package/modules/luponmediaBidAdapter.js +117 -522
  219. package/modules/luponmediaBidAdapter.md +2 -3
  220. package/modules/mediasquareBidAdapter.js +14 -20
  221. package/modules/microadBidAdapter.js +0 -1
  222. package/modules/nativeryBidAdapter.js +135 -0
  223. package/modules/nativeryBidAdapter.md +95 -0
  224. package/modules/nativoBidAdapter.js +3 -3
  225. package/modules/onetagBidAdapter.js +0 -1
  226. package/modules/pinkLionBidAdapter.js +17 -0
  227. package/modules/pinkLionBidAdapter.md +79 -0
  228. package/modules/prebidServerBidAdapter/ortbConverter.js +1 -1
  229. package/modules/priceFloors.js +2 -2
  230. package/modules/pubmaticBidAdapter.js +4 -1
  231. package/modules/qortexRtdProvider.md +1 -1
  232. package/modules/reconciliationRtdProvider.md +4 -4
  233. package/modules/rtbhouseBidAdapter.js +4 -83
  234. package/modules/rubiconBidAdapter.js +1 -1
  235. package/modules/sspBCBidAdapter.js +1 -1
  236. package/modules/stroeerCoreBidAdapter.js +3 -3
  237. package/modules/stvBidAdapter.js +19 -14
  238. package/modules/topicsFpdModule.md +1 -1
  239. package/modules/unifiedIdSystem.js +8 -1
  240. package/modules/userId/eids.js +15 -0
  241. package/modules/videoModule/index.js +0 -1
  242. package/modules/videoModule/videoImpressionVerifier.js +0 -1
  243. package/modules/yieldlabBidAdapter.js +1 -2
  244. package/modules/yieldmoBidAdapter.js +1 -2
  245. package/package.json +13 -20
  246. package/src/Renderer.js +1 -2
  247. package/src/adapterManager.js +14 -4
  248. package/src/auction.js +2 -3
  249. package/src/config.js +1 -2
  250. package/src/cpmBucketManager.js +1 -2
  251. package/src/secureCreatives.js +2 -3
  252. package/src/targeting.js +1 -2
  253. package/test/fake-server/README.md +3 -3
  254. package/test/helpers/index_adapter_utils.js +2 -2
  255. package/test/helpers/testing-utils.js +1 -1
  256. package/test/spec/auctionmanager_spec.js +2 -3
  257. package/test/spec/fpd/enrichment_spec.js +1 -1
  258. package/test/spec/libraries/greedy/greedyPromise_spec.js +2 -2
  259. package/test/spec/modules/adfBidAdapter_spec.js +1 -1
  260. package/test/spec/modules/adnuntiusBidAdapter_spec.js +25 -9
  261. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +2 -4
  262. package/test/spec/modules/adverxoBidAdapter_spec.js +25 -1
  263. package/test/spec/modules/afpBidAdapter_spec.js +0 -1
  264. package/test/spec/modules/bliinkBidAdapter_spec.js +15 -7
  265. package/test/spec/modules/contxtfulBidAdapter_spec.js +606 -82
  266. package/test/spec/modules/conversantBidAdapter_spec.js +1 -139
  267. package/test/spec/modules/cwireBidAdapter_spec.js +2 -2
  268. package/test/spec/modules/czechAdIdSystem_spec.js +4 -4
  269. package/test/spec/modules/displayioBidAdapter_spec.js +1 -1
  270. package/test/spec/modules/dynamicAdBoostRtdProvider_spec.js +0 -42
  271. package/test/spec/modules/enrichmentLiftMeasurement_spec.js +8 -8
  272. package/test/spec/modules/hypelabBidAdapter_spec.js +17 -11
  273. package/test/spec/modules/iasRtdProvider_spec.js +2 -2
  274. package/test/spec/modules/id5IdSystem_spec.js +1 -1
  275. package/test/spec/modules/idxIdSystem_spec.js +1 -2
  276. package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +25 -25
  277. package/test/spec/modules/intentIqIdSystem_spec.js +32 -32
  278. package/test/spec/modules/kargoBidAdapter_spec.js +11 -5
  279. package/test/spec/modules/liveIntentIdSystem_spec.js +14 -0
  280. package/test/spec/modules/lmpIdSystem_spec.js +1 -2
  281. package/test/spec/modules/lockrAIMIdSystem_spec.js +2 -2
  282. package/test/spec/modules/luceadBidAdapter_spec.js +1 -1
  283. package/test/spec/modules/luponmediaBidAdapter_spec.js +186 -324
  284. package/test/spec/modules/mediaeyesBidAdapter_spec.js +1 -1
  285. package/test/spec/modules/mediakeysBidAdapter_spec.js +1 -2
  286. package/test/spec/modules/mediasquareBidAdapter_spec.js +13 -2
  287. package/test/spec/modules/missenaBidAdapter_spec.js +1 -1
  288. package/test/spec/modules/nativeryBidAdapter_spec.js +195 -0
  289. package/test/spec/modules/nexx360BidAdapter_spec.js +6 -6
  290. package/test/spec/modules/oguryBidAdapter_spec.js +2 -2
  291. package/test/spec/modules/omsBidAdapter_spec.js +1 -1
  292. package/test/spec/modules/onetagBidAdapter_spec.js +1 -2
  293. package/test/spec/modules/onomagicBidAdapter_spec.js +2 -2
  294. package/test/spec/modules/overtoneRtdProvider_spec.mjs +1 -1
  295. package/test/spec/modules/permutiveIdentityManagerIdSystem_spec.js +17 -14
  296. package/test/spec/modules/pinkLionBidAdapter_spec.js +480 -0
  297. package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -2
  298. package/test/spec/modules/previousAuctionInfo_spec.js +2 -2
  299. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +1 -1
  300. package/test/spec/modules/pubmaticBidAdapter_spec.js +19 -1
  301. package/test/spec/modules/pubmaticRtdProvider_spec.js +16 -17
  302. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +2 -2
  303. package/test/spec/modules/rtbhouseBidAdapter_spec.js +0 -182
  304. package/test/spec/modules/rubiconBidAdapter_spec.js +3 -4
  305. package/test/spec/modules/sizeMappingV2_spec.js +1 -1
  306. package/test/spec/modules/sizeMapping_spec.js +2 -3
  307. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +36 -26
  308. package/test/spec/modules/stvBidAdapter_spec.js +108 -40
  309. package/test/spec/modules/topLevelPaapi_spec.js +1 -1
  310. package/test/spec/modules/tpmnBidAdapter_spec.js +1 -1
  311. package/test/spec/modules/ttdBidAdapter_spec.js +1 -1
  312. package/test/spec/modules/unifiedIdSystem_spec.js +20 -0
  313. package/test/spec/modules/userId_spec.js +1 -1
  314. package/test/spec/modules/vibrantmediaBidAdapter_spec.js +1 -1
  315. package/test/spec/modules/videoModule/submodules/videojsVideoProvider_spec.js +1 -1
  316. package/test/spec/modules/yieldmoBidAdapter_spec.js +2 -2
  317. package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +1 -2
  318. package/test/spec/unit/core/adapterManager_spec.js +29 -17
  319. package/test/spec/unit/core/targeting_spec.js +1 -1
  320. package/test/spec/unit/pbjs_api_spec.js +4 -5
  321. package/test/spec/utils_spec.js +20 -12
  322. package/test/test_deps.js +1 -1
  323. package/nightwatch.browserstack.json +0 -46
  324. package/nightwatch.conf.js +0 -36
  325. package/nightwatch.json +0 -40
@@ -0,0 +1,480 @@
1
+ import { expect } from 'chai';
2
+ import { spec } from '../../../modules/pinkLionBidAdapter.js';
3
+ import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
+ import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
+
6
+ const bidder = 'pinkLion';
7
+
8
+ describe('PinkLionBidAdapter', function () {
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
19
+ const bids = [
20
+ {
21
+ bidId: getUniqueIdentifierStr(),
22
+ bidder: bidder,
23
+ mediaTypes: {
24
+ [BANNER]: {
25
+ sizes: [[300, 250]]
26
+ }
27
+ },
28
+ params: {
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
32
+ },
33
+ {
34
+ bidId: getUniqueIdentifierStr(),
35
+ bidder: bidder,
36
+ mediaTypes: {
37
+ [VIDEO]: {
38
+ playerSize: [[300, 300]],
39
+ minduration: 5,
40
+ maxduration: 60
41
+ }
42
+ },
43
+ params: {
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
47
+ },
48
+ {
49
+ bidId: getUniqueIdentifierStr(),
50
+ bidder: bidder,
51
+ mediaTypes: {
52
+ [NATIVE]: {
53
+ native: {
54
+ title: {
55
+ required: true
56
+ },
57
+ body: {
58
+ required: true
59
+ },
60
+ icon: {
61
+ required: true,
62
+ size: [64, 64]
63
+ }
64
+ }
65
+ }
66
+ },
67
+ params: {
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
71
+ }
72
+ ];
73
+
74
+ const invalidBid = {
75
+ bidId: getUniqueIdentifierStr(),
76
+ bidder: bidder,
77
+ mediaTypes: {
78
+ [BANNER]: {
79
+ sizes: [[300, 250]]
80
+ }
81
+ },
82
+ params: {
83
+
84
+ }
85
+ }
86
+
87
+ const bidderRequest = {
88
+ uspConsent: '1---',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
93
+ refererInfo: {
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
103
+ },
104
+ timeout: 500
105
+ };
106
+
107
+ describe('isBidRequestValid', function () {
108
+ it('Should return true if there are bidId, params and key parameters present', function () {
109
+ expect(spec.isBidRequestValid(bids[0])).to.be.true;
110
+ });
111
+ it('Should return false if at least one of parameters is not present', function () {
112
+ expect(spec.isBidRequestValid(invalidBid)).to.be.false;
113
+ });
114
+ });
115
+
116
+ describe('buildRequests', function () {
117
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
118
+
119
+ it('Creates a ServerRequest object with method, URL and data', function () {
120
+ expect(serverRequest).to.exist;
121
+ expect(serverRequest.method).to.exist;
122
+ expect(serverRequest.url).to.exist;
123
+ expect(serverRequest.data).to.exist;
124
+ });
125
+
126
+ it('Returns POST method', function () {
127
+ expect(serverRequest.method).to.equal('POST');
128
+ });
129
+
130
+ it('Returns valid URL', function () {
131
+ expect(serverRequest.url).to.equal('https://us-east-ep.pinklion.io/pbjs');
132
+ });
133
+
134
+ it('Returns general data valid', function () {
135
+ let data = serverRequest.data;
136
+ expect(data).to.be.an('object');
137
+ expect(data).to.have.all.keys('deviceWidth',
138
+ 'deviceHeight',
139
+ 'device',
140
+ 'language',
141
+ 'secure',
142
+ 'host',
143
+ 'page',
144
+ 'placements',
145
+ 'coppa',
146
+ 'ccpa',
147
+ 'gdpr',
148
+ 'tmax',
149
+ 'bcat',
150
+ 'badv',
151
+ 'bapp',
152
+ 'battr'
153
+ );
154
+ expect(data.deviceWidth).to.be.a('number');
155
+ expect(data.deviceHeight).to.be.a('number');
156
+ expect(data.language).to.be.a('string');
157
+ expect(data.secure).to.be.within(0, 1);
158
+ expect(data.host).to.be.a('string');
159
+ expect(data.page).to.be.a('string');
160
+ expect(data.coppa).to.be.a('number');
161
+ expect(data.gdpr).to.be.a('object');
162
+ expect(data.ccpa).to.be.a('string');
163
+ expect(data.tmax).to.be.a('number');
164
+ expect(data.placements).to.have.lengthOf(3);
165
+ });
166
+
167
+ it('Returns valid placements', function () {
168
+ const { placements } = serverRequest.data;
169
+ for (let i = 0, len = placements.length; i < len; i++) {
170
+ const placement = placements[i];
171
+ expect(placement.placementId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
172
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
173
+ expect(placement.bidId).to.be.a('string');
174
+ expect(placement.schain).to.be.an('object');
175
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
176
+ expect(placement.type).to.exist.and.to.equal('publisher');
177
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
178
+
179
+ if (placement.adFormat === BANNER) {
180
+ expect(placement.sizes).to.be.an('array');
181
+ }
182
+ switch (placement.adFormat) {
183
+ case BANNER:
184
+ expect(placement.sizes).to.be.an('array');
185
+ break;
186
+ case VIDEO:
187
+ expect(placement.playerSize).to.be.an('array');
188
+ expect(placement.minduration).to.be.an('number');
189
+ expect(placement.maxduration).to.be.an('number');
190
+ break;
191
+ case NATIVE:
192
+ expect(placement.native).to.be.an('object');
193
+ break;
194
+ }
195
+ }
196
+ });
197
+
198
+ it('Returns valid endpoints', function () {
199
+ const bids = [
200
+ {
201
+ bidId: getUniqueIdentifierStr(),
202
+ bidder: bidder,
203
+ mediaTypes: {
204
+ [BANNER]: {
205
+ sizes: [[300, 250]]
206
+ }
207
+ },
208
+ params: {
209
+ endpointId: 'testBanner',
210
+ },
211
+ userIdAsEids
212
+ }
213
+ ];
214
+
215
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
216
+
217
+ const { placements } = serverRequest.data;
218
+ for (let i = 0, len = placements.length; i < len; i++) {
219
+ const placement = placements[i];
220
+ expect(placement.endpointId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
221
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
222
+ expect(placement.bidId).to.be.a('string');
223
+ expect(placement.schain).to.be.an('object');
224
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
225
+ expect(placement.type).to.exist.and.to.equal('network');
226
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
227
+
228
+ if (placement.adFormat === BANNER) {
229
+ expect(placement.sizes).to.be.an('array');
230
+ }
231
+ switch (placement.adFormat) {
232
+ case BANNER:
233
+ expect(placement.sizes).to.be.an('array');
234
+ break;
235
+ case VIDEO:
236
+ expect(placement.playerSize).to.be.an('array');
237
+ expect(placement.minduration).to.be.an('number');
238
+ expect(placement.maxduration).to.be.an('number');
239
+ break;
240
+ case NATIVE:
241
+ expect(placement.native).to.be.an('object');
242
+ break;
243
+ }
244
+ }
245
+ });
246
+
247
+ it('Returns data with gdprConsent and without uspConsent', function () {
248
+ delete bidderRequest.uspConsent;
249
+ serverRequest = spec.buildRequests(bids, bidderRequest);
250
+ let data = serverRequest.data;
251
+ expect(data.gdpr).to.exist;
252
+ expect(data.gdpr).to.be.a('object');
253
+ expect(data.gdpr).to.have.property('consentString');
254
+ expect(data.gdpr).to.not.have.property('vendorData');
255
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
256
+ expect(data.ccpa).to.not.exist;
257
+ delete bidderRequest.gdprConsent;
258
+ });
259
+
260
+ it('Returns data with uspConsent and without gdprConsent', function () {
261
+ bidderRequest.uspConsent = '1---';
262
+ delete bidderRequest.gdprConsent;
263
+ serverRequest = spec.buildRequests(bids, bidderRequest);
264
+ let data = serverRequest.data;
265
+ expect(data.ccpa).to.exist;
266
+ expect(data.ccpa).to.be.a('string');
267
+ expect(data.ccpa).to.equal(bidderRequest.uspConsent);
268
+ expect(data.gdpr).to.not.exist;
269
+ });
270
+ });
271
+
272
+ describe('gpp consent', function () {
273
+ it('bidderRequest.gppConsent', () => {
274
+ bidderRequest.gppConsent = {
275
+ gppString: 'abc123',
276
+ applicableSections: [8]
277
+ };
278
+
279
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
280
+ let data = serverRequest.data;
281
+ expect(data).to.be.an('object');
282
+ expect(data).to.have.property('gpp');
283
+ expect(data).to.have.property('gpp_sid');
284
+
285
+ delete bidderRequest.gppConsent;
286
+ })
287
+
288
+ it('bidderRequest.ortb2.regs.gpp', () => {
289
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
290
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
291
+ bidderRequest.ortb2.regs.gpp = 'abc123';
292
+ bidderRequest.ortb2.regs.gpp_sid = [8];
293
+
294
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
295
+ let data = serverRequest.data;
296
+ expect(data).to.be.an('object');
297
+ expect(data).to.have.property('gpp');
298
+ expect(data).to.have.property('gpp_sid');
299
+
300
+ bidderRequest.ortb2;
301
+ })
302
+ });
303
+
304
+ describe('interpretResponse', function () {
305
+ it('Should interpret banner response', function () {
306
+ const banner = {
307
+ body: [{
308
+ mediaType: 'banner',
309
+ width: 300,
310
+ height: 250,
311
+ cpm: 0.4,
312
+ ad: 'Test',
313
+ requestId: '23fhj33i987f',
314
+ ttl: 120,
315
+ creativeId: '2',
316
+ netRevenue: true,
317
+ currency: 'USD',
318
+ dealId: '1',
319
+ meta: {
320
+ advertiserDomains: ['google.com'],
321
+ advertiserId: 1234
322
+ }
323
+ }]
324
+ };
325
+ let bannerResponses = spec.interpretResponse(banner);
326
+ expect(bannerResponses).to.be.an('array').that.is.not.empty;
327
+ let dataItem = bannerResponses[0];
328
+ expect(dataItem).to.have.all.keys('requestId', 'cpm', 'width', 'height', 'ad', 'ttl', 'creativeId',
329
+ 'netRevenue', 'currency', 'dealId', 'mediaType', 'meta');
330
+ expect(dataItem.requestId).to.equal(banner.body[0].requestId);
331
+ expect(dataItem.cpm).to.equal(banner.body[0].cpm);
332
+ expect(dataItem.width).to.equal(banner.body[0].width);
333
+ expect(dataItem.height).to.equal(banner.body[0].height);
334
+ expect(dataItem.ad).to.equal(banner.body[0].ad);
335
+ expect(dataItem.ttl).to.equal(banner.body[0].ttl);
336
+ expect(dataItem.creativeId).to.equal(banner.body[0].creativeId);
337
+ expect(dataItem.netRevenue).to.be.true;
338
+ expect(dataItem.currency).to.equal(banner.body[0].currency);
339
+ expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
340
+ });
341
+ it('Should interpret video response', function () {
342
+ const video = {
343
+ body: [{
344
+ vastUrl: 'test.com',
345
+ mediaType: 'video',
346
+ cpm: 0.5,
347
+ requestId: '23fhj33i987f',
348
+ ttl: 120,
349
+ creativeId: '2',
350
+ netRevenue: true,
351
+ currency: 'USD',
352
+ dealId: '1',
353
+ meta: {
354
+ advertiserDomains: ['google.com'],
355
+ advertiserId: 1234
356
+ }
357
+ }]
358
+ };
359
+ let videoResponses = spec.interpretResponse(video);
360
+ expect(videoResponses).to.be.an('array').that.is.not.empty;
361
+
362
+ let dataItem = videoResponses[0];
363
+ expect(dataItem).to.have.all.keys('requestId', 'cpm', 'vastUrl', 'ttl', 'creativeId',
364
+ 'netRevenue', 'currency', 'dealId', 'mediaType', 'meta');
365
+ expect(dataItem.requestId).to.equal('23fhj33i987f');
366
+ expect(dataItem.cpm).to.equal(0.5);
367
+ expect(dataItem.vastUrl).to.equal('test.com');
368
+ expect(dataItem.ttl).to.equal(120);
369
+ expect(dataItem.creativeId).to.equal('2');
370
+ expect(dataItem.netRevenue).to.be.true;
371
+ expect(dataItem.currency).to.equal('USD');
372
+ expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
373
+ });
374
+ it('Should interpret native response', function () {
375
+ const native = {
376
+ body: [{
377
+ mediaType: 'native',
378
+ native: {
379
+ clickUrl: 'test.com',
380
+ title: 'Test',
381
+ image: 'test.com',
382
+ impressionTrackers: ['test.com'],
383
+ },
384
+ ttl: 120,
385
+ cpm: 0.4,
386
+ requestId: '23fhj33i987f',
387
+ creativeId: '2',
388
+ netRevenue: true,
389
+ currency: 'USD',
390
+ meta: {
391
+ advertiserDomains: ['google.com'],
392
+ advertiserId: 1234
393
+ }
394
+ }]
395
+ };
396
+ let nativeResponses = spec.interpretResponse(native);
397
+ expect(nativeResponses).to.be.an('array').that.is.not.empty;
398
+
399
+ let dataItem = nativeResponses[0];
400
+ expect(dataItem).to.have.keys('requestId', 'cpm', 'ttl', 'creativeId', 'netRevenue', 'currency', 'mediaType', 'native', 'meta');
401
+ expect(dataItem.native).to.have.keys('clickUrl', 'impressionTrackers', 'title', 'image')
402
+ expect(dataItem.requestId).to.equal('23fhj33i987f');
403
+ expect(dataItem.cpm).to.equal(0.4);
404
+ expect(dataItem.native.clickUrl).to.equal('test.com');
405
+ expect(dataItem.native.title).to.equal('Test');
406
+ expect(dataItem.native.image).to.equal('test.com');
407
+ expect(dataItem.native.impressionTrackers).to.be.an('array').that.is.not.empty;
408
+ expect(dataItem.native.impressionTrackers[0]).to.equal('test.com');
409
+ expect(dataItem.ttl).to.equal(120);
410
+ expect(dataItem.creativeId).to.equal('2');
411
+ expect(dataItem.netRevenue).to.be.true;
412
+ expect(dataItem.currency).to.equal('USD');
413
+ expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
414
+ });
415
+ it('Should return an empty array if invalid banner response is passed', function () {
416
+ const invBanner = {
417
+ body: [{
418
+ width: 300,
419
+ cpm: 0.4,
420
+ ad: 'Test',
421
+ requestId: '23fhj33i987f',
422
+ ttl: 120,
423
+ creativeId: '2',
424
+ netRevenue: true,
425
+ currency: 'USD',
426
+ dealId: '1'
427
+ }]
428
+ };
429
+
430
+ let serverResponses = spec.interpretResponse(invBanner);
431
+ expect(serverResponses).to.be.an('array').that.is.empty;
432
+ });
433
+ it('Should return an empty array if invalid video response is passed', function () {
434
+ const invVideo = {
435
+ body: [{
436
+ mediaType: 'video',
437
+ cpm: 0.5,
438
+ requestId: '23fhj33i987f',
439
+ ttl: 120,
440
+ creativeId: '2',
441
+ netRevenue: true,
442
+ currency: 'USD',
443
+ dealId: '1'
444
+ }]
445
+ };
446
+ let serverResponses = spec.interpretResponse(invVideo);
447
+ expect(serverResponses).to.be.an('array').that.is.empty;
448
+ });
449
+ it('Should return an empty array if invalid native response is passed', function () {
450
+ const invNative = {
451
+ body: [{
452
+ mediaType: 'native',
453
+ clickUrl: 'test.com',
454
+ title: 'Test',
455
+ impressionTrackers: ['test.com'],
456
+ ttl: 120,
457
+ requestId: '23fhj33i987f',
458
+ creativeId: '2',
459
+ netRevenue: true,
460
+ currency: 'USD',
461
+ }]
462
+ };
463
+ let serverResponses = spec.interpretResponse(invNative);
464
+ expect(serverResponses).to.be.an('array').that.is.empty;
465
+ });
466
+ it('Should return an empty array if invalid response is passed', function () {
467
+ const invalid = {
468
+ body: [{
469
+ ttl: 120,
470
+ creativeId: '2',
471
+ netRevenue: true,
472
+ currency: 'USD',
473
+ dealId: '1'
474
+ }]
475
+ };
476
+ let serverResponses = spec.interpretResponse(invalid);
477
+ expect(serverResponses).to.be.an('array').that.is.empty;
478
+ });
479
+ });
480
+ });
@@ -1,4 +1,4 @@
1
-
1
+
2
2
  import {expect} from 'chai';
3
3
  import {
4
4
  PrebidServer as Adapter,
@@ -859,7 +859,7 @@ describe('S2S Adapter', function () {
859
859
  it('should be set to 0.75 * requestTimeout, if lower than maxTimeout', () => {
860
860
  adapter.callBids({...REQUEST, requestBidsTimeout: maxTimeout / 2}, BID_REQUESTS, addBidResponse, done, ajax);
861
861
  const req = JSON.parse(server.requests[0].requestBody);
862
- expect(req.tmax).to.eql(maxTimeout / 2 * 0.75);
862
+ expect(req.tmax).to.eql(Math.floor(maxTimeout / 2 * 0.75));
863
863
  })
864
864
  })
865
865
  })
@@ -155,10 +155,10 @@ describe('previous auction info', () => {
155
155
  ],
156
156
  timestamp: Date.now(),
157
157
  };
158
-
158
+
159
159
  config.setConfig({ [CONFIG_NS]: { enabled: true, bidders: ['testBidder1'] } });
160
160
  previousAuctionInfo.onAuctionEndHandler(auctionDetailsWithRejectedBid);
161
-
161
+
162
162
  const stored = previousAuctionInfo.auctionState['testBidder1'][0];
163
163
  expect(stored).to.include({
164
164
  bidId: 'bid456',
@@ -558,7 +558,7 @@ describe('pubmatic analytics adapter', function () {
558
558
  userId: mockUserIds
559
559
  }]
560
560
  }]);
561
-
561
+
562
562
  sandbox.stub($$PREBID_GLOBAL$$, 'getConfig').callsFake((key) => {
563
563
  if (key === 'userSync') return mockUserSync;
564
564
  return null;
@@ -222,6 +222,24 @@ describe('PubMatic adapter', () => {
222
222
 
223
223
  describe('Request formation', () => {
224
224
  describe('IMP', () => {
225
+ it('should include previousAuctionInfo in request when available', () => {
226
+ const bidRequestWithPrevAuction = utils.deepClone(validBidRequests[0]);
227
+ const bidderRequestWithPrevAuction = utils.deepClone(bidderRequest);
228
+
229
+ bidderRequestWithPrevAuction.ortb2 = bidderRequestWithPrevAuction.ortb2 || {};
230
+ bidderRequestWithPrevAuction.ortb2.ext = bidderRequestWithPrevAuction.ortb2.ext || {};
231
+ bidderRequestWithPrevAuction.ortb2.ext.prebid = bidderRequestWithPrevAuction.ortb2.ext.prebid || {};
232
+ bidderRequestWithPrevAuction.ortb2.ext.prebid.previousauctioninfo = {
233
+ bidderRequestId: 'bidder-request-id'
234
+ };
235
+
236
+ const request = spec.buildRequests([bidRequestWithPrevAuction], bidderRequestWithPrevAuction);
237
+ expect(request.data.ext).to.have.property('previousAuctionInfo');
238
+ expect(request.data.ext.previousAuctionInfo).to.deep.equal({
239
+ bidderRequestId: 'bidder-request-id'
240
+ });
241
+ });
242
+
225
243
  it('should generate request with banner', () => {
226
244
  const request = spec.buildRequests(validBidRequests, bidderRequest);
227
245
  const { imp } = request?.data;
@@ -1090,7 +1108,7 @@ describe('PubMatic adapter', () => {
1090
1108
  expect(bidResponse[0].meta).to.not.have.property('primaryCatId');
1091
1109
  expect(bidResponse[0].meta).to.not.have.property('secondaryCatIds');
1092
1110
  });
1093
-
1111
+
1094
1112
  it('should not set primaryCatId and secondaryCatIds in meta when bid.cat is undefined', () => {
1095
1113
  const copiedResponse = utils.deepClone(response);
1096
1114
  delete copiedResponse.body.seatbid[0].bid[0].cat;
@@ -30,7 +30,7 @@ describe('Pubmatic RTD Provider', () => {
30
30
  };
31
31
  });
32
32
  });
33
-
33
+
34
34
  afterEach(() => {
35
35
  sandbox.restore();
36
36
  });
@@ -474,15 +474,14 @@ describe('Pubmatic RTD Provider', () => {
474
474
  fetchStub.resolves(new Response('Invalid JSON', { status: 200 }));
475
475
 
476
476
  await fetchData('1234', '123', 'FLOORS');
477
- expect(logErrorStub.called).to.be.true;
478
- expect(logErrorStub.firstCall.args[0]).to.include('Error while fetching FLOORS');
477
+ expect(logErrorStub.calledWith(sinon.match(/Error while fetching\s*FLOORS/))).to.be.true;
479
478
  });
480
479
 
481
480
  it('should log error when response is not ok', async () => {
482
481
  fetchStub.resolves(new Response(null, { status: 500 }));
483
482
 
484
483
  await fetchData('1234', '123', 'FLOORS');
485
- expect(logErrorStub.firstCall.args[0]).to.include('Error while fetching FLOORS');
484
+ expect(logErrorStub.calledWith(sinon.match(/Error while fetching\s*FLOORS/))).to.be.true;
486
485
  });
487
486
 
488
487
  it('should log error on network failure', async () => {
@@ -490,7 +489,7 @@ describe('Pubmatic RTD Provider', () => {
490
489
 
491
490
  await fetchData('1234', '123', 'FLOORS');
492
491
  expect(logErrorStub.called).to.be.true;
493
- expect(logErrorStub.firstCall.args[0]).to.include('Error while fetching FLOORS');
492
+ expect(logErrorStub.calledWith(sinon.match(/Error while fetching\s*FLOORS/))).to.be.true;
494
493
  });
495
494
  });
496
495
 
@@ -518,7 +517,7 @@ describe('Pubmatic RTD Provider', () => {
518
517
  }
519
518
  }
520
519
  }
521
-
520
+
522
521
  const hookConfig = {
523
522
  reqBidsConfigObj,
524
523
  context: this,
@@ -531,18 +530,18 @@ describe('Pubmatic RTD Provider', () => {
531
530
  callback = sinon.spy();
532
531
  continueAuctionStub = sandbox.stub(priceFloors, 'continueAuction');
533
532
  logErrorStub = sandbox.stub(utils, 'logError');
534
-
533
+
535
534
  global.configMergedPromise = Promise.resolve();
536
535
  });
537
-
536
+
538
537
  afterEach(() => {
539
538
  sandbox.restore(); // Restore all stubs/spies
540
539
  });
541
-
540
+
542
541
  it('should call continueAuction with correct hookConfig', async function () {
543
542
  configMerged();
544
543
  await pubmaticSubmodule.getBidRequestData(reqBidsConfigObj, callback);
545
-
544
+
546
545
  expect(continueAuctionStub.called).to.be.true;
547
546
  expect(continueAuctionStub.firstCall.args[0]).to.have.property('reqBidsConfigObj', reqBidsConfigObj);
548
547
  expect(continueAuctionStub.firstCall.args[0]).to.have.property('haveExited', false);
@@ -552,18 +551,18 @@ describe('Pubmatic RTD Provider', () => {
552
551
  // configMerged();
553
552
  // global._country = 'US';
554
553
  // pubmaticSubmodule.getBidRequestData(reqBidsConfigObj, callback);
555
-
554
+
556
555
  // expect(reqBidsConfigObj.ortb2Fragments.bidder).to.have.property('pubmatic');
557
556
  // // expect(reqBidsConfigObj.ortb2Fragments.bidder.pubmatic.user.ext.ctr).to.equal('US');
558
557
  // });
559
-
558
+
560
559
  it('should call callback once after execution', async function () {
561
560
  configMerged();
562
561
  await pubmaticSubmodule.getBidRequestData(reqBidsConfigObj, callback);
563
-
562
+
564
563
  expect(callback.called).to.be.true;
565
564
  });
566
- });
565
+ });
567
566
 
568
567
  describe('withTimeout', function () {
569
568
  it('should resolve with the original promise value if it resolves before the timeout', async function () {
@@ -599,12 +598,12 @@ describe('Pubmatic RTD Provider', () => {
599
598
 
600
599
  const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 50));
601
600
  const resultPromise = withTimeout(promise, 100);
602
-
601
+
603
602
  clock.tick(50);
604
603
  await resultPromise;
605
-
604
+
606
605
  expect(clearTimeoutSpy.called).to.be.true;
607
-
606
+
608
607
  clearTimeoutSpy.restore();
609
608
  clock.restore();
610
609
  });
@@ -79,7 +79,7 @@ describe('PubWise Prebid Analytics', function () {
79
79
  /* check for critical values */
80
80
  let request = requests[0];
81
81
  let data = JSON.parse(request.requestBody);
82
-
82
+
83
83
  // console.log(data.metaData);
84
84
  expect(data.metaData, 'metaData property').to.exist;
85
85
  expect(data.metaData.pbjs_version, 'pbjs version').to.equal('$prebid.version$')
@@ -133,7 +133,7 @@ describe('PubWise Prebid Analytics', function () {
133
133
  expect(data.eventList[0], 'eventList property').to.exist;
134
134
  expect(data.eventList[0].args, 'eventList property').to.exist;
135
135
 
136
-
136
+
137
137
  // console.log(data.eventList[0].args);
138
138
 
139
139
  let eventArgs = data.eventList[0].args;