prebid.js 7.14.0 → 7.16.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 (239) hide show
  1. package/.circleci/config.yml +3 -0
  2. package/dist/1plusXRtdProvider.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adfBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnBidAdapter.js +1 -1
  9. package/dist/adkernelBidAdapter.js +1 -1
  10. package/dist/adlooxAdServerVideo.js +1 -1
  11. package/dist/adlooxRtdProvider.js +1 -1
  12. package/dist/adrelevantisBidAdapter.js +1 -1
  13. package/dist/adtrgtmeBidAdapter.js +1 -1
  14. package/dist/adtrueBidAdapter.js +1 -1
  15. package/dist/adxcgBidAdapter.js +1 -1
  16. package/dist/airgridRtdProvider.js +1 -1
  17. package/dist/ajaBidAdapter.js +1 -1
  18. package/dist/amxBidAdapter.js +1 -1
  19. package/dist/amxIdSystem.js +1 -1
  20. package/dist/aolBidAdapter.js +1 -1
  21. package/dist/appierAnalyticsAdapter.js +1 -1
  22. package/dist/appnexusBidAdapter.js +1 -1
  23. package/dist/asoBidAdapter.js +1 -1
  24. package/dist/axonixBidAdapter.js +1 -1
  25. package/dist/beachfrontBidAdapter.js +1 -1
  26. package/dist/bidglassBidAdapter.js +1 -1
  27. package/dist/big-richmediaBidAdapter.js +1 -1
  28. package/dist/bizzclickBidAdapter.js +1 -1
  29. package/dist/bliinkBidAdapter.js +1 -1
  30. package/dist/bluebillywigBidAdapter.js +1 -1
  31. package/dist/brandmetricsRtdProvider.js +1 -1
  32. package/dist/bridgewellBidAdapter.js +1 -1
  33. package/dist/brightMountainMediaBidAdapter.js +1 -1
  34. package/dist/brightcomBidAdapter.js +1 -1
  35. package/dist/browsiRtdProvider.js +1 -1
  36. package/dist/categoryTranslation.js +1 -1
  37. package/dist/concertBidAdapter.js +1 -1
  38. package/dist/connectadBidAdapter.js +1 -1
  39. package/dist/consentManagement.js +1 -1
  40. package/dist/consentManagementUsp.js +1 -1
  41. package/dist/consumableBidAdapter.js +1 -1
  42. package/dist/conversantBidAdapter.js +1 -1
  43. package/dist/cpmstarBidAdapter.js +1 -1
  44. package/dist/craftBidAdapter.js +1 -1
  45. package/dist/criteoBidAdapter.js +1 -1
  46. package/dist/currency.js +1 -1
  47. package/dist/dataControllerModule.js +1 -1
  48. package/dist/dchain.js +1 -1
  49. package/dist/deepintentBidAdapter.js +1 -1
  50. package/dist/dependencies.json +3 -0
  51. package/dist/dgkeywordRtdProvider.js +1 -1
  52. package/dist/dianomiBidAdapter.js +1 -1
  53. package/dist/distroscaleBidAdapter.js +1 -1
  54. package/dist/dspxBidAdapter.js +1 -1
  55. package/dist/eplanningBidAdapter.js +1 -1
  56. package/dist/etargetBidAdapter.js +1 -1
  57. package/dist/feedadBidAdapter.js +1 -1
  58. package/dist/finativeBidAdapter.js +1 -1
  59. package/dist/fpdModule.js +1 -1
  60. package/dist/gamoshiBidAdapter.js +1 -1
  61. package/dist/glimpseBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.js +1 -1
  64. package/dist/gothamadsBidAdapter.js +1 -1
  65. package/dist/gridBidAdapter.js +1 -1
  66. package/dist/gridNMBidAdapter.js +1 -1
  67. package/dist/gumgumBidAdapter.js +1 -1
  68. package/dist/h12mediaBidAdapter.js +1 -1
  69. package/dist/iasRtdProvider.js +1 -1
  70. package/dist/id5IdSystem.js +1 -1
  71. package/dist/imRtdProvider.js +1 -1
  72. package/dist/impactifyBidAdapter.js +1 -1
  73. package/dist/improvedigitalBidAdapter.js +1 -1
  74. package/dist/inmarBidAdapter.js +1 -1
  75. package/dist/insticatorBidAdapter.js +1 -1
  76. package/dist/ixBidAdapter.js +1 -1
  77. package/dist/justpremiumBidAdapter.js +1 -1
  78. package/dist/konduitAnalyticsAdapter.js +1 -1
  79. package/dist/kueezBidAdapter.js +1 -1
  80. package/dist/lassoBidAdapter.js +1 -1
  81. package/dist/lifestreetBidAdapter.js +1 -1
  82. package/dist/liveIntentAnalyticsAdapter.js +1 -0
  83. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  84. package/dist/logicadBidAdapter.js +1 -1
  85. package/dist/loglyliftBidAdapter.js +1 -1
  86. package/dist/luponmediaBidAdapter.js +1 -1
  87. package/dist/malltvAnalyticsAdapter.js +1 -1
  88. package/dist/marsmediaBidAdapter.js +1 -1
  89. package/dist/mass.js +1 -1
  90. package/dist/mediafuseBidAdapter.js +1 -1
  91. package/dist/mediakeysBidAdapter.js +1 -1
  92. package/dist/mediasniperBidAdapter.js +1 -1
  93. package/dist/mediasquareBidAdapter.js +1 -1
  94. package/dist/mgidBidAdapter.js +1 -1
  95. package/dist/minutemediaBidAdapter.js +1 -1
  96. package/dist/multibid.js +1 -1
  97. package/dist/naveggIdSystem.js +1 -1
  98. package/dist/newspassidBidAdapter.js +1 -1
  99. package/dist/nextMillenniumBidAdapter.js +1 -1
  100. package/dist/not-for-prod/prebid.js +172 -171
  101. package/dist/oguryBidAdapter.js +1 -1
  102. package/dist/oneKeyRtdProvider.js +1 -1
  103. package/dist/onetagBidAdapter.js +1 -1
  104. package/dist/ooloAnalyticsAdapter.js +1 -1
  105. package/dist/openxBidAdapter.js +1 -1
  106. package/dist/openxOrtbBidAdapter.js +1 -1
  107. package/dist/operaadsBidAdapter.js +1 -1
  108. package/dist/outbrainBidAdapter.js +1 -1
  109. package/dist/ozoneBidAdapter.js +1 -1
  110. package/dist/parrableIdSystem.js +1 -1
  111. package/dist/permutiveRtdProvider.js +1 -1
  112. package/dist/pixfutureBidAdapter.js +1 -1
  113. package/dist/prebid-core.js +2 -2
  114. package/dist/prebidServerBidAdapter.js +1 -1
  115. package/dist/priceFloors.js +1 -1
  116. package/dist/pubCommonId.js +1 -1
  117. package/dist/pubgeniusBidAdapter.js +1 -1
  118. package/dist/publinkIdSystem.js +1 -1
  119. package/dist/pubmaticBidAdapter.js +1 -1
  120. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  121. package/dist/pubwiseBidAdapter.js +1 -1
  122. package/dist/pubxBidAdapter.js +1 -1
  123. package/dist/pxyzBidAdapter.js +1 -1
  124. package/dist/quantcastBidAdapter.js +1 -1
  125. package/dist/readpeakBidAdapter.js +1 -1
  126. package/dist/relaidoBidAdapter.js +1 -1
  127. package/dist/rhythmoneBidAdapter.js +1 -1
  128. package/dist/riseBidAdapter.js +1 -1
  129. package/dist/rtdModule.js +1 -1
  130. package/dist/rubiconAnalyticsAdapter.js +1 -1
  131. package/dist/rubiconBidAdapter.js +1 -1
  132. package/dist/seedingAllianceBidAdapter.js +1 -1
  133. package/dist/seedtagBidAdapter.js +1 -1
  134. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  135. package/dist/sharethroughBidAdapter.js +1 -1
  136. package/dist/shinezBidAdapter.js +1 -1
  137. package/dist/sirdataRtdProvider.js +1 -1
  138. package/dist/smaatoBidAdapter.js +1 -1
  139. package/dist/smartadserverBidAdapter.js +1 -1
  140. package/dist/smartxBidAdapter.js +1 -1
  141. package/dist/smilewantedBidAdapter.js +1 -1
  142. package/dist/sonobiBidAdapter.js +1 -1
  143. package/dist/sovrnAnalyticsAdapter.js +1 -1
  144. package/dist/sovrnBidAdapter.js +1 -1
  145. package/dist/spotxBidAdapter.js +1 -1
  146. package/dist/sspBCBidAdapter.js +1 -1
  147. package/dist/stroeerCoreBidAdapter.js +1 -1
  148. package/dist/sublimeBidAdapter.js +1 -1
  149. package/dist/synacormediaBidAdapter.js +1 -1
  150. package/dist/targetVideoBidAdapter.js +1 -1
  151. package/dist/teadsBidAdapter.js +1 -1
  152. package/dist/trionBidAdapter.js +1 -1
  153. package/dist/tripleliftBidAdapter.js +1 -1
  154. package/dist/ttdBidAdapter.js +1 -1
  155. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  156. package/dist/ucfunnelBidAdapter.js +1 -1
  157. package/dist/underdogmediaBidAdapter.js +1 -1
  158. package/dist/undertoneBidAdapter.js +1 -1
  159. package/dist/userId.js +1 -1
  160. package/dist/vidazooBidAdapter.js +1 -1
  161. package/dist/videobyteBidAdapter.js +1 -1
  162. package/dist/viewability.js +1 -1
  163. package/dist/visxBidAdapter.js +1 -1
  164. package/dist/vuukleBidAdapter.js +1 -1
  165. package/dist/weboramaRtdProvider.js +1 -1
  166. package/dist/widespaceBidAdapter.js +1 -1
  167. package/dist/winrBidAdapter.js +1 -1
  168. package/dist/yahoosspBidAdapter.js +1 -1
  169. package/dist/yieldliftBidAdapter.js +1 -1
  170. package/dist/yieldmoBidAdapter.js +1 -1
  171. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  172. package/dist/zeta_global_sspBidAdapter.js +1 -1
  173. package/modules/amxBidAdapter.js +98 -78
  174. package/modules/appnexusBidAdapter.js +73 -12
  175. package/modules/categoryTranslation.js +9 -8
  176. package/modules/consentManagement.js +4 -2
  177. package/modules/consentManagementUsp.js +17 -14
  178. package/modules/cpmstarBidAdapter.js +2 -1
  179. package/modules/currency.js +4 -3
  180. package/modules/dataControllerModule/index.js +4 -3
  181. package/modules/dchain.js +3 -2
  182. package/modules/dianomiBidAdapter.js +17 -14
  183. package/modules/dianomiBidAdapter.md +1 -1
  184. package/modules/feedadBidAdapter.js +40 -8
  185. package/modules/fpdModule/index.js +3 -2
  186. package/modules/iasRtdProvider.js +17 -3
  187. package/modules/ixBidAdapter.js +2 -5
  188. package/modules/liveIntentAnalyticsAdapter.js +148 -0
  189. package/modules/liveIntentAnalyticsAdapter.md +22 -0
  190. package/modules/mass.js +5 -3
  191. package/modules/multibid/index.js +4 -2
  192. package/modules/naveggIdSystem.js +53 -22
  193. package/modules/nextMillenniumBidAdapter.js +168 -55
  194. package/modules/openxOrtbBidAdapter.js +1 -1
  195. package/modules/prebidServerBidAdapter/index.js +18 -4
  196. package/modules/priceFloors.js +5 -4
  197. package/modules/pubCommonId.js +3 -2
  198. package/modules/rtdModule/index.js +3 -2
  199. package/modules/sharethroughBidAdapter.js +8 -6
  200. package/modules/spotxBidAdapter.js +1 -0
  201. package/modules/stroeerCoreBidAdapter.js +129 -92
  202. package/modules/stroeerCoreBidAdapter.md +52 -14
  203. package/modules/teadsBidAdapter.js +32 -10
  204. package/modules/ucfunnelBidAdapter.js +9 -10
  205. package/modules/userId/index.js +73 -48
  206. package/modules/viewability.js +2 -170
  207. package/package.json +3 -3
  208. package/src/adapterManager.js +21 -13
  209. package/src/adapters/bidderFactory.js +28 -6
  210. package/src/auction.js +17 -4
  211. package/src/auctionManager.js +5 -0
  212. package/src/constants.json +2 -0
  213. package/src/native.js +5 -2
  214. package/src/prebid.js +52 -23
  215. package/src/secureCreatives.js +1 -1
  216. package/src/utils/perfMetrics.js +386 -0
  217. package/src/utils.js +1 -1
  218. package/test/helpers/testing-utils.js +4 -3
  219. package/test/spec/modules/adriverIdSystem_spec.js +7 -3
  220. package/test/spec/modules/amxBidAdapter_spec.js +250 -192
  221. package/test/spec/modules/appnexusBidAdapter_spec.js +61 -6
  222. package/test/spec/modules/consentManagementUsp_spec.js +6 -2
  223. package/test/spec/modules/dianomiBidAdapter_spec.js +326 -6
  224. package/test/spec/modules/feedadBidAdapter_spec.js +147 -11
  225. package/test/spec/modules/iasRtdProvider_spec.js +3 -1
  226. package/test/spec/modules/ixBidAdapter_spec.js +0 -64
  227. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +297 -0
  228. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +103 -1
  229. package/test/spec/modules/openxOrtbBidAdapter_spec.js +31 -0
  230. package/test/spec/modules/sharethroughBidAdapter_spec.js +23 -2
  231. package/test/spec/modules/spotxBidAdapter_spec.js +6 -0
  232. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +315 -33
  233. package/test/spec/modules/teadsBidAdapter_spec.js +65 -11
  234. package/test/spec/modules/ucfunnelBidAdapter_spec.js +24 -10
  235. package/test/spec/native_spec.js +11 -0
  236. package/test/spec/unit/utils/perfMetrics_spec.js +394 -0
  237. package/wdio.conf.js +1 -0
  238. package/modules/viewability.md +0 -87
  239. package/test/spec/modules/viewability_spec.js +0 -280
@@ -1,280 +0,0 @@
1
- import { expect } from 'chai';
2
- import * as sinon from 'sinon';
3
- import * as utils from 'src/utils.js';
4
- import * as viewability from 'modules/viewability.js';
5
-
6
- describe('viewability test', () => {
7
- describe('start measurement', () => {
8
- let sandbox;
9
- let intersectionObserverStub;
10
- let setTimeoutStub;
11
- let observeCalled;
12
- let unobserveCalled;
13
- let ti = 1;
14
- beforeEach(() => {
15
- observeCalled = false;
16
- unobserveCalled = false;
17
- sandbox = sinon.sandbox.create();
18
-
19
- let fakeIntersectionObserver = (stateChange, options) => {
20
- return {
21
- observe: (element) => {
22
- observeCalled = true;
23
- stateChange([{ isIntersecting: true }]);
24
- },
25
- unobserve: (element) => {
26
- unobserveCalled = true;
27
- },
28
- };
29
- };
30
-
31
- intersectionObserverStub = sandbox.stub(window, 'IntersectionObserver').callsFake(fakeIntersectionObserver);
32
- setTimeoutStub = sandbox.stub(window, 'setTimeout').callsFake((callback, timeout) => {
33
- callback();
34
- return ti++;
35
- });
36
- });
37
-
38
- afterEach(() => {
39
- sandbox.restore();
40
- });
41
-
42
- it('should trigger appropriate callbacks', () => {
43
- viewability.startMeasurement('0', {}, { method: 'img', value: 'http://my.tracker/123' }, { inViewThreshold: 0.5, timeInView: 1000 });
44
-
45
- sinon.assert.called(intersectionObserverStub);
46
- sinon.assert.called(setTimeoutStub);
47
- expect(observeCalled).to.equal(true);
48
- expect(unobserveCalled).to.equal(true);
49
- });
50
-
51
- it('should trigger img tracker', () => {
52
- let triggerPixelSpy = sandbox.spy(utils, ['triggerPixel']);
53
- viewability.startMeasurement('1', {}, { method: 'img', value: 'http://my.tracker/123' }, { inViewThreshold: 0.5, timeInView: 1000 });
54
- expect(triggerPixelSpy.callCount).to.equal(1);
55
- });
56
-
57
- it('should trigger js tracker', () => {
58
- let insertHtmlIntoIframeSpy = sandbox.spy(utils, ['insertHtmlIntoIframe']);
59
- viewability.startMeasurement('2', {}, { method: 'js', value: 'http://my.tracker/123.js' }, { inViewThreshold: 0.5, timeInView: 1000 });
60
- expect(insertHtmlIntoIframeSpy.callCount).to.equal(1);
61
- });
62
-
63
- it('should trigger callback tracker', () => {
64
- let callbackFired = false;
65
- viewability.startMeasurement('3', {}, { method: 'callback', value: () => { callbackFired = true; } }, { inViewThreshold: 0.5, timeInView: 1000 });
66
- expect(callbackFired).to.equal(true);
67
- });
68
-
69
- it('should check for vid uniqueness', () => {
70
- let logWarnSpy = sandbox.spy(utils, 'logWarn');
71
- viewability.startMeasurement('4', {}, { method: 'js', value: 'http://my.tracker/123.js' }, { inViewThreshold: 0.5, timeInView: 1000 });
72
- expect(logWarnSpy.callCount).to.equal(0);
73
-
74
- viewability.startMeasurement('4', {}, { method: 'js', value: 'http://my.tracker/123.js' }, { inViewThreshold: 0.5, timeInView: 1000 });
75
- expect(logWarnSpy.callCount).to.equal(1);
76
- expect(logWarnSpy.calledWith(`${viewability.MODULE_NAME}: must provide an unregistered vid`, '4')).to.equal(true);
77
- });
78
-
79
- it('should check for valid criteria', () => {
80
- let logWarnSpy = sandbox.spy(utils, 'logWarn');
81
- viewability.startMeasurement('5', {}, { method: 'js', value: 'http://my.tracker/123.js' }, { timeInView: 1000 });
82
- expect(logWarnSpy.callCount).to.equal(1);
83
- expect(logWarnSpy.calledWith(`${viewability.MODULE_NAME}: missing criteria`, { timeInView: 1000 })).to.equal(true);
84
- });
85
-
86
- it('should check for valid tracker', () => {
87
- let logWarnSpy = sandbox.spy(utils, 'logWarn');
88
- viewability.startMeasurement('6', {}, { method: 'callback', value: 'string' }, { inViewThreshold: 0.5, timeInView: 1000 });
89
- expect(logWarnSpy.callCount).to.equal(1);
90
- expect(logWarnSpy.calledWith(`${viewability.MODULE_NAME}: invalid tracker`, { method: 'callback', value: 'string' })).to.equal(true);
91
- });
92
-
93
- it('should check if element provided', () => {
94
- let logWarnSpy = sandbox.spy(utils, 'logWarn');
95
- viewability.startMeasurement('7', undefined, { method: 'js', value: 'http://my.tracker/123.js' }, { timeInView: 1000 });
96
- expect(logWarnSpy.callCount).to.equal(1);
97
- expect(logWarnSpy.calledWith(`${viewability.MODULE_NAME}: no html element provided`)).to.equal(true);
98
- });
99
- });
100
-
101
- describe('stop measurement', () => {
102
- let sandbox;
103
- let intersectionObserverStub;
104
- let setTimeoutStub;
105
- let clearTimeoutStub;
106
- let observeCalled;
107
- let unobserveCalled;
108
- let stateChangeBackup;
109
- let ti = 1;
110
- beforeEach(() => {
111
- observeCalled = false;
112
- unobserveCalled = false;
113
- sandbox = sinon.sandbox.create();
114
-
115
- let fakeIntersectionObserver = (stateChange, options) => {
116
- return {
117
- observe: (element) => {
118
- stateChangeBackup = stateChange;
119
- observeCalled = true;
120
- stateChange([{ isIntersecting: true }]);
121
- },
122
- unobserve: (element) => {
123
- unobserveCalled = true;
124
- },
125
- };
126
- };
127
-
128
- intersectionObserverStub = sandbox.stub(window, 'IntersectionObserver').callsFake(fakeIntersectionObserver);
129
- setTimeoutStub = sandbox.stub(window, 'setTimeout').callsFake((callback, timeout) => {
130
- // skipping the callback
131
- return ti++;
132
- });
133
- clearTimeoutStub = sandbox.stub(window, 'clearTimeout').callsFake((timeoutId) => { });
134
- });
135
-
136
- afterEach(() => {
137
- sandbox.restore();
138
- });
139
-
140
- it('should clear the timeout', () => {
141
- viewability.startMeasurement('10', {}, { method: 'img', value: 'http://my.tracker/123' }, { inViewThreshold: 0.5, timeInView: 1000 });
142
- stateChangeBackup([{ isIntersecting: false }]);
143
- sinon.assert.called(intersectionObserverStub);
144
- sinon.assert.called(setTimeoutStub);
145
- sinon.assert.called(clearTimeoutStub);
146
- expect(observeCalled).to.equal(true);
147
- });
148
-
149
- it('should unobserve', () => {
150
- viewability.startMeasurement('11', {}, { method: 'img', value: 'http://my.tracker/123' }, { inViewThreshold: 0.5, timeInView: 1000 });
151
- sinon.assert.called(intersectionObserverStub);
152
- sinon.assert.called(setTimeoutStub);
153
- expect(observeCalled).to.equal(true);
154
- expect(unobserveCalled).to.equal(false);
155
-
156
- viewability.stopMeasurement('11');
157
- expect(unobserveCalled).to.equal(true);
158
- sinon.assert.called(clearTimeoutStub);
159
- });
160
-
161
- it('should check for vid existence', () => {
162
- let logWarnSpy = sandbox.spy(utils, 'logWarn');
163
- viewability.stopMeasurement('100');
164
- expect(logWarnSpy.callCount).to.equal(1);
165
- expect(logWarnSpy.calledWith(`${viewability.MODULE_NAME}: must provide a registered vid`, '100')).to.equal(true);
166
- });
167
- });
168
-
169
- describe('handle creative messages', () => {
170
- let sandbox;
171
- let intersectionObserverStub;
172
- let setTimeoutStub;
173
- let observeCalled;
174
- let unobserveCalled;
175
- let ti = 1;
176
- let getElementsByTagStub;
177
- let getElementByIdStub;
178
-
179
- let fakeContentWindow = {};
180
- beforeEach(() => {
181
- observeCalled = false;
182
- unobserveCalled = false;
183
- sandbox = sinon.sandbox.create();
184
-
185
- let fakeIntersectionObserver = (stateChange, options) => {
186
- return {
187
- observe: (element) => {
188
- observeCalled = true;
189
- stateChange([{ isIntersecting: true }]);
190
- },
191
- unobserve: (element) => {
192
- unobserveCalled = true;
193
- },
194
- };
195
- };
196
-
197
- intersectionObserverStub = sandbox.stub(window, 'IntersectionObserver').callsFake(fakeIntersectionObserver);
198
- setTimeoutStub = sandbox.stub(window, 'setTimeout').callsFake((callback, timeout) => {
199
- callback();
200
- return ti++;
201
- });
202
-
203
- getElementsByTagStub = sandbox.stub(document, 'getElementsByTagName').callsFake((tagName) => {
204
- return [{
205
- contentWindow: fakeContentWindow,
206
- }];
207
- });
208
- getElementByIdStub = sandbox.stub(document, 'getElementById').callsFake((id) => {
209
- return {};
210
- });
211
- });
212
-
213
- afterEach(() => {
214
- sandbox.restore();
215
- });
216
-
217
- it('should find element by contentWindow', () => {
218
- let viewabilityRecord = {
219
- vid: 1000,
220
- tracker: {
221
- value: 'http://my.tracker/123',
222
- method: 'img',
223
- },
224
- criteria: { inViewThreshold: 0.5, timeInView: 1000 },
225
- message: 'Prebid Viewability',
226
- action: 'startMeasurement',
227
- };
228
- let data = JSON.stringify(viewabilityRecord);
229
-
230
- viewability.receiveMessage({
231
- data: data,
232
- source: fakeContentWindow,
233
- });
234
-
235
- sinon.assert.called(getElementsByTagStub);
236
- sinon.assert.called(intersectionObserverStub);
237
- sinon.assert.called(setTimeoutStub);
238
- expect(observeCalled).to.equal(true);
239
- expect(unobserveCalled).to.equal(true);
240
- });
241
-
242
- it('should find element by id', () => {
243
- let viewabilityRecord = {
244
- vid: 1001,
245
- tracker: {
246
- value: 'http://my.tracker/123',
247
- method: 'img',
248
- },
249
- criteria: { inViewThreshold: 0.5, timeInView: 1000 },
250
- message: 'Prebid Viewability',
251
- action: 'startMeasurement',
252
- elementId: '1',
253
- };
254
- let data = JSON.stringify(viewabilityRecord);
255
- viewability.receiveMessage({
256
- data: data,
257
- });
258
-
259
- sinon.assert.called(getElementByIdStub);
260
- sinon.assert.called(intersectionObserverStub);
261
- sinon.assert.called(setTimeoutStub);
262
- expect(observeCalled).to.equal(true);
263
- expect(unobserveCalled).to.equal(true);
264
- });
265
-
266
- it('should stop measurement', () => {
267
- let viewabilityRecord = {
268
- vid: 1001,
269
- message: 'Prebid Viewability',
270
- action: 'stopMeasurement',
271
- };
272
- let data = JSON.stringify(viewabilityRecord);
273
- viewability.receiveMessage({
274
- data: data,
275
- });
276
-
277
- expect(unobserveCalled).to.equal(true);
278
- });
279
- });
280
- });