@thoughtspot/visual-embed-sdk 1.50.1 → 1.51.0-test
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.
- package/cjs/package.json +1 -1
- package/cjs/src/config.d.ts +1 -0
- package/cjs/src/config.d.ts.map +1 -1
- package/cjs/src/config.js +2 -1
- package/cjs/src/config.js.map +1 -1
- package/cjs/src/css-variables.d.ts +63 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +148 -25
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +74 -37
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +571 -150
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts +1 -1
- package/cjs/src/embed/base.js +1 -1
- package/cjs/src/embed/conversation.d.ts +375 -2
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +21 -15
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +323 -17
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/events.spec.js +45 -0
- package/cjs/src/embed/events.spec.js.map +1 -1
- package/cjs/src/embed/host-events.spec.js +81 -0
- package/cjs/src/embed/host-events.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.d.ts +15 -0
- package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.js +1 -0
- package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js +1 -0
- package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js +27 -0
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +76 -14
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +50 -9
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +432 -4
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/spotter-utils.d.ts +15 -1
- package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
- package/cjs/src/embed/spotter-utils.js +28 -1
- package/cjs/src/embed/spotter-utils.js.map +1 -1
- package/cjs/src/embed/spotter-utils.spec.js +129 -0
- package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
- package/cjs/src/embed/spotter-viz-utils.d.ts +9 -10
- package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
- package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +16 -8
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +82 -30
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +537 -3
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +3 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +3 -2
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts +4 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +4 -0
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +2 -1
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/all-types-export.parity.spec.d.ts +2 -0
- package/cjs/src/react/all-types-export.parity.spec.d.ts.map +1 -0
- package/cjs/src/react/all-types-export.parity.spec.js +194 -0
- package/cjs/src/react/all-types-export.parity.spec.js.map +1 -0
- package/cjs/src/react/index.d.ts +66 -32
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +5 -3
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +101 -0
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +789 -32
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +610 -20
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils.spec.js +4 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-fCne7kmU.js → index-Bivg-mDx.js} +1 -1
- package/dist/src/config.d.ts +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +63 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +148 -25
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +1 -1
- package/dist/src/embed/conversation.d.ts +375 -2
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/contracts.d.ts +15 -0
- package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +76 -14
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/spotter-utils.d.ts +15 -1
- package/dist/src/embed/spotter-utils.d.ts.map +1 -1
- package/dist/src/embed/spotter-viz-utils.d.ts +9 -10
- package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +16 -8
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts +4 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/all-types-export.parity.spec.d.ts +2 -0
- package/dist/src/react/all-types-export.parity.spec.d.ts.map +1 -0
- package/dist/src/react/index.d.ts +66 -32
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +789 -32
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +878 -120
- package/dist/tsembed-react.js +877 -119
- package/dist/tsembed.es.js +936 -181
- package/dist/tsembed.js +938 -183
- package/dist/visual-embed-sdk-react-full.d.ts +1553 -128
- package/dist/visual-embed-sdk-react.d.ts +1555 -129
- package/dist/visual-embed-sdk.d.ts +1499 -100
- package/lib/package.json +1 -1
- package/lib/src/config.d.ts +1 -0
- package/lib/src/config.d.ts.map +1 -1
- package/lib/src/config.js +1 -0
- package/lib/src/config.js.map +1 -1
- package/lib/src/css-variables.d.ts +63 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +148 -25
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +75 -38
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +572 -151
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +1 -1
- package/lib/src/embed/base.js +1 -1
- package/lib/src/embed/conversation.d.ts +375 -2
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +23 -17
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +323 -17
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/events.spec.js +45 -0
- package/lib/src/embed/events.spec.js.map +1 -1
- package/lib/src/embed/host-events.spec.js +81 -0
- package/lib/src/embed/host-events.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts +15 -0
- package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.js +1 -0
- package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.js +1 -0
- package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.spec.js +27 -0
- package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +76 -14
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +50 -9
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +432 -4
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/spotter-utils.d.ts +15 -1
- package/lib/src/embed/spotter-utils.d.ts.map +1 -1
- package/lib/src/embed/spotter-utils.js +25 -0
- package/lib/src/embed/spotter-utils.js.map +1 -1
- package/lib/src/embed/spotter-utils.spec.js +130 -1
- package/lib/src/embed/spotter-utils.spec.js.map +1 -1
- package/lib/src/embed/spotter-viz-utils.d.ts +9 -10
- package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
- package/lib/src/embed/spotter-viz-utils.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +16 -8
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +82 -30
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +537 -3
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +3 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +4 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +4 -0
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/all-types-export.parity.spec.d.ts +2 -0
- package/lib/src/react/all-types-export.parity.spec.d.ts.map +1 -0
- package/lib/src/react/all-types-export.parity.spec.js +191 -0
- package/lib/src/react/all-types-export.parity.spec.js.map +1 -0
- package/lib/src/react/index.d.ts +66 -32
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +5 -3
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +102 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +789 -32
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +610 -20
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils.spec.js +4 -0
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +1499 -100
- package/package.json +1 -1
- package/src/config.ts +1 -0
- package/src/css-variables.ts +77 -0
- package/src/embed/app.spec.ts +729 -188
- package/src/embed/app.ts +240 -75
- package/src/embed/base.ts +1 -1
- package/src/embed/conversation.spec.ts +379 -20
- package/src/embed/conversation.ts +412 -18
- package/src/embed/events.spec.ts +56 -0
- package/src/embed/host-events.spec.ts +118 -0
- package/src/embed/hostEventClient/contracts.ts +16 -0
- package/src/embed/hostEventClient/host-event-client.spec.ts +46 -0
- package/src/embed/hostEventClient/host-event-client.ts +3 -2
- package/src/embed/liveboard.spec.ts +565 -4
- package/src/embed/liveboard.ts +150 -29
- package/src/embed/spotter-utils.spec.ts +140 -1
- package/src/embed/spotter-utils.ts +36 -1
- package/src/embed/spotter-viz-utils.ts +9 -10
- package/src/embed/ts-embed.spec.ts +699 -3
- package/src/embed/ts-embed.ts +99 -35
- package/src/index.ts +44 -2
- package/src/mixpanel-service.ts +4 -0
- package/src/react/all-types-export.parity.spec.ts +208 -0
- package/src/react/all-types-export.ts +22 -0
- package/src/react/index.spec.tsx +158 -0
- package/src/react/index.tsx +70 -33
- package/src/types.ts +791 -30
- package/src/utils.spec.ts +5 -0
|
@@ -7,6 +7,8 @@ import * as processTriggerInstance from '../utils/processTrigger';
|
|
|
7
7
|
import * as auth from '../auth';
|
|
8
8
|
import * as previewService from '../utils/graphql/preview-service';
|
|
9
9
|
import * as SessionInfoService from '../utils/sessionInfoService';
|
|
10
|
+
import { logger } from '../utils/logger';
|
|
11
|
+
import { DEFAULT_LAZY_LOADING_MARGIN } from '../config';
|
|
10
12
|
const defaultViewConfig = {
|
|
11
13
|
frameParams: {
|
|
12
14
|
width: 1280,
|
|
@@ -106,6 +108,22 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
106
108
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&${defaultParamsWithoutHiddenActions}&hideAction=[%22${Action.ReportError}%22,%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${liveboardId}`);
|
|
107
109
|
});
|
|
108
110
|
});
|
|
111
|
+
test('should hide and disable the Spotter button on the Liveboard header', async () => {
|
|
112
|
+
expect(Action.SpotterOnLiveboard).toBe('spotterOnLiveboard');
|
|
113
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
114
|
+
hiddenActions: [Action.SpotterOnLiveboard],
|
|
115
|
+
disabledActions: [Action.SpotterOnLiveboard],
|
|
116
|
+
...defaultViewConfig,
|
|
117
|
+
liveboardId,
|
|
118
|
+
});
|
|
119
|
+
liveboardEmbed.render();
|
|
120
|
+
await executeAfterWait(() => {
|
|
121
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), {
|
|
122
|
+
hideAction: JSON.stringify([Action.ReportError, Action.SpotterOnLiveboard]),
|
|
123
|
+
disableAction: JSON.stringify([Action.SpotterOnLiveboard]),
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
});
|
|
109
127
|
test('should set visible actions', async () => {
|
|
110
128
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
111
129
|
visibleActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
|
|
@@ -141,6 +159,17 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
141
159
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&enable2ColumnLayout=true${prefixParams}#/embed/viz/${liveboardId}`);
|
|
142
160
|
});
|
|
143
161
|
});
|
|
162
|
+
test('should set isLiveboardAlwaysOn12ColLayout to true in url', async () => {
|
|
163
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
164
|
+
isLiveboardAlwaysOn12ColLayout: true,
|
|
165
|
+
...defaultViewConfig,
|
|
166
|
+
liveboardId,
|
|
167
|
+
});
|
|
168
|
+
liveboardEmbed.render();
|
|
169
|
+
await executeAfterWait(() => {
|
|
170
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isLiveboardAlwaysOn12ColLayout=true${prefixParams}#/embed/viz/${liveboardId}`);
|
|
171
|
+
});
|
|
172
|
+
});
|
|
144
173
|
test('should set isLiveboardStylingAndGroupingEnabled to true in url (deprecated, use isLiveboardMasterpiecesEnabled)', async () => {
|
|
145
174
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
146
175
|
isLiveboardStylingAndGroupingEnabled: true,
|
|
@@ -152,6 +181,28 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
152
181
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isLiveboardStylingAndGroupingEnabled=true${prefixParams}#/embed/viz/${liveboardId}`);
|
|
153
182
|
});
|
|
154
183
|
});
|
|
184
|
+
test('should set liveboardGutter in url', async () => {
|
|
185
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
186
|
+
...defaultViewConfig,
|
|
187
|
+
liveboardId,
|
|
188
|
+
liveboardGutter: 8,
|
|
189
|
+
});
|
|
190
|
+
liveboardEmbed.render();
|
|
191
|
+
await executeAfterWait(() => {
|
|
192
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&liveboardGutter=8${prefixParams}#/embed/viz/${liveboardId}`);
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
test('should set liveboardGutter to 0 in url', async () => {
|
|
196
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
197
|
+
...defaultViewConfig,
|
|
198
|
+
liveboardId,
|
|
199
|
+
liveboardGutter: 0,
|
|
200
|
+
});
|
|
201
|
+
liveboardEmbed.render();
|
|
202
|
+
await executeAfterWait(() => {
|
|
203
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&liveboardGutter=0${prefixParams}#/embed/viz/${liveboardId}`);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
155
206
|
test('should set isThisPeriodInDateFiltersEnabled to true in url', async () => {
|
|
156
207
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
157
208
|
...defaultViewConfig,
|
|
@@ -196,14 +247,14 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
196
247
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isWYSIWYGLiveboardPDFEnabled=true${prefixParams}#/embed/viz/${liveboardId}`);
|
|
197
248
|
});
|
|
198
249
|
});
|
|
199
|
-
test('should
|
|
250
|
+
test('should not set isWYSIWYGLiveboardPDFEnabled in url by default', async () => {
|
|
200
251
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
201
252
|
...defaultViewConfig,
|
|
202
253
|
liveboardId,
|
|
203
254
|
});
|
|
204
255
|
liveboardEmbed.render();
|
|
205
256
|
await executeAfterWait(() => {
|
|
206
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}
|
|
257
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}#/embed/viz/${liveboardId}`);
|
|
207
258
|
});
|
|
208
259
|
});
|
|
209
260
|
test('should set isLiveboardXLSXCSVDownloadEnabled to true in url', async () => {
|
|
@@ -545,6 +596,38 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
545
596
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isCentralizedLiveboardFilterUXEnabled=false${prefixParams}#/embed/viz/${liveboardId}`);
|
|
546
597
|
});
|
|
547
598
|
});
|
|
599
|
+
test('should add isScopedLiveboardFilteringEnabled flag and set value to true to the iframe src', async () => {
|
|
600
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
601
|
+
...defaultViewConfig,
|
|
602
|
+
liveboardId,
|
|
603
|
+
isScopedLiveboardFilteringEnabled: true,
|
|
604
|
+
});
|
|
605
|
+
liveboardEmbed.render();
|
|
606
|
+
await executeAfterWait(() => {
|
|
607
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isScopedLiveboardFilteringEnabled=true${prefixParams}#/embed/viz/${liveboardId}`);
|
|
608
|
+
});
|
|
609
|
+
});
|
|
610
|
+
test('should add isScopedLiveboardFilteringEnabled flag and set value to false to the iframe src', async () => {
|
|
611
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
612
|
+
...defaultViewConfig,
|
|
613
|
+
liveboardId,
|
|
614
|
+
isScopedLiveboardFilteringEnabled: false,
|
|
615
|
+
});
|
|
616
|
+
liveboardEmbed.render();
|
|
617
|
+
await executeAfterWait(() => {
|
|
618
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isScopedLiveboardFilteringEnabled=false${prefixParams}#/embed/viz/${liveboardId}`);
|
|
619
|
+
});
|
|
620
|
+
});
|
|
621
|
+
test('should not add isScopedLiveboardFilteringEnabled flag to the iframe src when undefined', async () => {
|
|
622
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
623
|
+
...defaultViewConfig,
|
|
624
|
+
liveboardId,
|
|
625
|
+
});
|
|
626
|
+
liveboardEmbed.render();
|
|
627
|
+
await executeAfterWait(() => {
|
|
628
|
+
expect(getIFrameSrc()).not.toContain('isScopedLiveboardFilteringEnabled');
|
|
629
|
+
});
|
|
630
|
+
});
|
|
548
631
|
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
|
|
549
632
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
550
633
|
...defaultViewConfig,
|
|
@@ -937,6 +1020,37 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
937
1020
|
expect(onSpy).toHaveBeenCalledWith(HostEvent.Navigate, 'embed/viz/lb1/viz1');
|
|
938
1021
|
}, 1002);
|
|
939
1022
|
});
|
|
1023
|
+
test('navigateToLiveboard should call preRender when preRenderConfig.preRenderId is set', () => {
|
|
1024
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1025
|
+
...defaultViewConfig,
|
|
1026
|
+
liveboardId,
|
|
1027
|
+
preRenderConfig: {
|
|
1028
|
+
preRenderId: 'config-pre-render-id',
|
|
1029
|
+
},
|
|
1030
|
+
});
|
|
1031
|
+
const preRenderSpy = jest
|
|
1032
|
+
.spyOn(liveboardEmbed, 'preRender')
|
|
1033
|
+
.mockResolvedValue(liveboardEmbed);
|
|
1034
|
+
liveboardEmbed.navigateToLiveboard('lb1');
|
|
1035
|
+
expect(preRenderSpy).toHaveBeenCalledTimes(1);
|
|
1036
|
+
expect(preRenderSpy).toHaveBeenCalledWith(true);
|
|
1037
|
+
});
|
|
1038
|
+
test('navigateToLiveboard should prefer preRenderConfig.preRenderId over top-level preRenderId', () => {
|
|
1039
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1040
|
+
...defaultViewConfig,
|
|
1041
|
+
liveboardId,
|
|
1042
|
+
preRenderId: 'top-level-id',
|
|
1043
|
+
preRenderConfig: {
|
|
1044
|
+
preRenderId: 'config-level-id',
|
|
1045
|
+
},
|
|
1046
|
+
});
|
|
1047
|
+
const preRenderSpy = jest
|
|
1048
|
+
.spyOn(liveboardEmbed, 'preRender')
|
|
1049
|
+
.mockResolvedValue(liveboardEmbed);
|
|
1050
|
+
liveboardEmbed.navigateToLiveboard('lb1');
|
|
1051
|
+
expect(preRenderSpy).toHaveBeenCalledTimes(1);
|
|
1052
|
+
expect(preRenderSpy).toHaveBeenCalledWith(true);
|
|
1053
|
+
});
|
|
940
1054
|
test('should set runtime parametere values in url params', async () => {
|
|
941
1055
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
942
1056
|
...defaultViewConfig,
|
|
@@ -987,6 +1101,43 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
987
1101
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&enableStarterPrompts=true#/embed/viz/${liveboardId}`);
|
|
988
1102
|
});
|
|
989
1103
|
});
|
|
1104
|
+
test('should set openSpotterOnLiveboardByDefault parameter in url params', async () => {
|
|
1105
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1106
|
+
...defaultViewConfig,
|
|
1107
|
+
liveboardId,
|
|
1108
|
+
spotterChatConfig: { openSpotterOnLiveboardByDefault: true },
|
|
1109
|
+
});
|
|
1110
|
+
await liveboardEmbed.render();
|
|
1111
|
+
await executeAfterWait(() => {
|
|
1112
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), {
|
|
1113
|
+
openSpotterOnLiveboardByDefault: 'true',
|
|
1114
|
+
});
|
|
1115
|
+
});
|
|
1116
|
+
});
|
|
1117
|
+
test('should set openSpotterOnLiveboardByDefault to false when explicitly disabled', async () => {
|
|
1118
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1119
|
+
...defaultViewConfig,
|
|
1120
|
+
liveboardId,
|
|
1121
|
+
spotterChatConfig: { openSpotterOnLiveboardByDefault: false },
|
|
1122
|
+
});
|
|
1123
|
+
await liveboardEmbed.render();
|
|
1124
|
+
await executeAfterWait(() => {
|
|
1125
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), {
|
|
1126
|
+
openSpotterOnLiveboardByDefault: 'false',
|
|
1127
|
+
});
|
|
1128
|
+
});
|
|
1129
|
+
});
|
|
1130
|
+
test('should not set openSpotterOnLiveboardByDefault when it is not configured', async () => {
|
|
1131
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1132
|
+
...defaultViewConfig,
|
|
1133
|
+
liveboardId,
|
|
1134
|
+
spotterChatConfig: { enableStarterPrompts: true },
|
|
1135
|
+
});
|
|
1136
|
+
await liveboardEmbed.render();
|
|
1137
|
+
await executeAfterWait(() => {
|
|
1138
|
+
expect(getIFrameSrc()).not.toContain('openSpotterOnLiveboardByDefault');
|
|
1139
|
+
});
|
|
1140
|
+
});
|
|
990
1141
|
test('should set spotterFileUploadFileTypes parameter in url params', async () => {
|
|
991
1142
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
992
1143
|
...defaultViewConfig,
|
|
@@ -1022,6 +1173,28 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1022
1173
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&updatedSpotterChatPrompt=false#/embed/viz/${liveboardId}`);
|
|
1023
1174
|
});
|
|
1024
1175
|
});
|
|
1176
|
+
test('should render the liveboard embed with showSpotterRadiance', async () => {
|
|
1177
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1178
|
+
...defaultViewConfig,
|
|
1179
|
+
liveboardId,
|
|
1180
|
+
showSpotterRadiance: true,
|
|
1181
|
+
});
|
|
1182
|
+
await liveboardEmbed.render();
|
|
1183
|
+
await executeAfterWait(() => {
|
|
1184
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&showSpotterRadiance=true#/embed/viz/${liveboardId}`);
|
|
1185
|
+
});
|
|
1186
|
+
});
|
|
1187
|
+
test('should render the liveboard embed with showSpotterRadiance disabled', async () => {
|
|
1188
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1189
|
+
...defaultViewConfig,
|
|
1190
|
+
liveboardId,
|
|
1191
|
+
showSpotterRadiance: false,
|
|
1192
|
+
});
|
|
1193
|
+
await liveboardEmbed.render();
|
|
1194
|
+
await executeAfterWait(() => {
|
|
1195
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&showSpotterRadiance=false#/embed/viz/${liveboardId}`);
|
|
1196
|
+
});
|
|
1197
|
+
});
|
|
1025
1198
|
test('should set hideToolResponseCardBranding parameter in url params via spotterChatConfig', async () => {
|
|
1026
1199
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1027
1200
|
...defaultViewConfig,
|
|
@@ -1082,6 +1255,34 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1082
1255
|
});
|
|
1083
1256
|
});
|
|
1084
1257
|
});
|
|
1258
|
+
test('should include starterPrompts in APP_INIT embedParams', async () => {
|
|
1259
|
+
const starterPrompts = {
|
|
1260
|
+
enable: true,
|
|
1261
|
+
quick: {
|
|
1262
|
+
label: 'Quick',
|
|
1263
|
+
questions: [
|
|
1264
|
+
{ label: 'Q1', prompt: 'P1' },
|
|
1265
|
+
{ label: 'Q2', prompt: 'P2' },
|
|
1266
|
+
],
|
|
1267
|
+
},
|
|
1268
|
+
research: { label: 'Research' },
|
|
1269
|
+
};
|
|
1270
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1271
|
+
...defaultViewConfig,
|
|
1272
|
+
liveboardId,
|
|
1273
|
+
spotterChatConfig: { starterPrompts },
|
|
1274
|
+
});
|
|
1275
|
+
mockMessageChannel();
|
|
1276
|
+
await liveboardEmbed.render();
|
|
1277
|
+
const mockPort = { postMessage: jest.fn() };
|
|
1278
|
+
await executeAfterWait(() => {
|
|
1279
|
+
postMessageToParent(getIFrameEl().contentWindow, { type: EmbedEvent.APP_INIT, data: {} }, mockPort);
|
|
1280
|
+
});
|
|
1281
|
+
await executeAfterWait(() => {
|
|
1282
|
+
expect(mockPort.postMessage.mock.calls[0][0].data.embedParams.starterPrompts)
|
|
1283
|
+
.toEqual(starterPrompts);
|
|
1284
|
+
});
|
|
1285
|
+
});
|
|
1085
1286
|
test('should pass brandHeadline through spotterVizConfig in APP_INIT', async () => {
|
|
1086
1287
|
const spotterViz = { brandName: 'MyBrand', brandHeadline: "Hi, there! I'm" };
|
|
1087
1288
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
@@ -1404,6 +1605,188 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1404
1605
|
expect(iframeSrc).toContain('isFullHeightPinboard=true');
|
|
1405
1606
|
}, 100);
|
|
1406
1607
|
});
|
|
1608
|
+
test('should default lazy loading flags to true when fullHeight is enabled', async () => {
|
|
1609
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1610
|
+
...defaultViewConfig,
|
|
1611
|
+
liveboardId,
|
|
1612
|
+
fullHeight: true,
|
|
1613
|
+
});
|
|
1614
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBe(true);
|
|
1615
|
+
expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBe(true);
|
|
1616
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBe('500px 0px');
|
|
1617
|
+
await liveboardEmbed.render();
|
|
1618
|
+
await executeAfterWait(() => {
|
|
1619
|
+
const iframeSrc = getIFrameSrc();
|
|
1620
|
+
expect(iframeSrc).toContain('isLazyLoadingForEmbedEnabled=true');
|
|
1621
|
+
expect(iframeSrc).toContain('isFullHeightPinboard=true');
|
|
1622
|
+
expect(iframeSrc).toContain('rootMarginForLazyLoad=500px%200px');
|
|
1623
|
+
}, 100);
|
|
1624
|
+
});
|
|
1625
|
+
test('should not default lazy loading flags when fullHeight is not enabled', async () => {
|
|
1626
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1627
|
+
...defaultViewConfig,
|
|
1628
|
+
liveboardId,
|
|
1629
|
+
});
|
|
1630
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBeUndefined();
|
|
1631
|
+
expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBeUndefined();
|
|
1632
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBeUndefined();
|
|
1633
|
+
});
|
|
1634
|
+
test('should not write the defaults back onto the caller view config', async () => {
|
|
1635
|
+
const callerViewConfig = {
|
|
1636
|
+
...defaultViewConfig,
|
|
1637
|
+
liveboardId,
|
|
1638
|
+
fullHeight: true,
|
|
1639
|
+
};
|
|
1640
|
+
new LiveboardEmbed(getRootEl(), callerViewConfig);
|
|
1641
|
+
expect(callerViewConfig.lazyLoadingForFullHeight).toBeUndefined();
|
|
1642
|
+
expect(callerViewConfig.enableScrollableContainerLazyLoading).toBeUndefined();
|
|
1643
|
+
expect(callerViewConfig.lazyLoadingMargin).toBeUndefined();
|
|
1644
|
+
});
|
|
1645
|
+
test('should not default lazy loading flags when fullHeight is explicitly false', async () => {
|
|
1646
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1647
|
+
...defaultViewConfig,
|
|
1648
|
+
liveboardId,
|
|
1649
|
+
fullHeight: false,
|
|
1650
|
+
});
|
|
1651
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBeUndefined();
|
|
1652
|
+
expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBeUndefined();
|
|
1653
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBeUndefined();
|
|
1654
|
+
});
|
|
1655
|
+
test('should default lazyLoadingMargin when lazyLoadingForFullHeight is set explicitly', async () => {
|
|
1656
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1657
|
+
...defaultViewConfig,
|
|
1658
|
+
liveboardId,
|
|
1659
|
+
fullHeight: true,
|
|
1660
|
+
lazyLoadingForFullHeight: true,
|
|
1661
|
+
});
|
|
1662
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBe(DEFAULT_LAZY_LOADING_MARGIN);
|
|
1663
|
+
await liveboardEmbed.render();
|
|
1664
|
+
await executeAfterWait(() => {
|
|
1665
|
+
expect(getIFrameSrc()).toContain('rootMarginForLazyLoad=500px%200px');
|
|
1666
|
+
}, 100);
|
|
1667
|
+
});
|
|
1668
|
+
test('should let an explicit lazyLoadingMargin win over the default', async () => {
|
|
1669
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1670
|
+
...defaultViewConfig,
|
|
1671
|
+
liveboardId,
|
|
1672
|
+
fullHeight: true,
|
|
1673
|
+
lazyLoadingMargin: '250px',
|
|
1674
|
+
});
|
|
1675
|
+
await liveboardEmbed.render();
|
|
1676
|
+
await executeAfterWait(() => {
|
|
1677
|
+
const iframeSrc = getIFrameSrc();
|
|
1678
|
+
expect(iframeSrc).toContain('rootMarginForLazyLoad=250px');
|
|
1679
|
+
expect(iframeSrc).not.toContain('rootMarginForLazyLoad=500px%200px');
|
|
1680
|
+
}, 100);
|
|
1681
|
+
});
|
|
1682
|
+
test('should drop an invalid lazyLoadingMargin and log an error', async () => {
|
|
1683
|
+
const loggerErrorSpy = jest.spyOn(logger, 'error').mockImplementation(() => undefined);
|
|
1684
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1685
|
+
...defaultViewConfig,
|
|
1686
|
+
liveboardId,
|
|
1687
|
+
fullHeight: true,
|
|
1688
|
+
lazyLoadingMargin: 'not-a-margin',
|
|
1689
|
+
});
|
|
1690
|
+
await liveboardEmbed.render();
|
|
1691
|
+
await executeAfterWait(() => {
|
|
1692
|
+
const iframeSrc = getIFrameSrc();
|
|
1693
|
+
expect(iframeSrc).toContain('isLazyLoadingForEmbedEnabled=true');
|
|
1694
|
+
expect(iframeSrc).not.toContain('rootMarginForLazyLoad');
|
|
1695
|
+
expect(loggerErrorSpy).toHaveBeenCalledWith('Please provide a valid lazyLoadingMargin value (e.g., "10px")');
|
|
1696
|
+
}, 100);
|
|
1697
|
+
});
|
|
1698
|
+
test('should track scrollable ancestors by default when only fullHeight is set', async () => {
|
|
1699
|
+
const scrollContainer = getRootEl();
|
|
1700
|
+
scrollContainer.style.overflow = 'auto';
|
|
1701
|
+
const scrollContainerSpy = jest.spyOn(scrollContainer, 'addEventListener');
|
|
1702
|
+
const resizeObserveSpy = jest.fn();
|
|
1703
|
+
const resizeDisconnectSpy = jest.fn();
|
|
1704
|
+
const originalResizeObserver = window.ResizeObserver;
|
|
1705
|
+
window.ResizeObserver = jest.fn().mockImplementation(() => ({
|
|
1706
|
+
observe: resizeObserveSpy,
|
|
1707
|
+
disconnect: resizeDisconnectSpy,
|
|
1708
|
+
}));
|
|
1709
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1710
|
+
...defaultViewConfig,
|
|
1711
|
+
liveboardId,
|
|
1712
|
+
fullHeight: true,
|
|
1713
|
+
});
|
|
1714
|
+
await liveboardEmbed.render();
|
|
1715
|
+
await executeAfterWait(() => {
|
|
1716
|
+
expect(scrollContainerSpy).toHaveBeenCalledWith('scroll', expect.any(Function));
|
|
1717
|
+
expect(resizeObserveSpy).toHaveBeenCalledWith(scrollContainer);
|
|
1718
|
+
}, 100);
|
|
1719
|
+
liveboardEmbed.destroy();
|
|
1720
|
+
expect(resizeDisconnectSpy).toHaveBeenCalled();
|
|
1721
|
+
scrollContainer.style.overflow = '';
|
|
1722
|
+
window.ResizeObserver = originalResizeObserver;
|
|
1723
|
+
});
|
|
1724
|
+
test('should skip ancestor tracking when enableScrollableContainerLazyLoading is false', async () => {
|
|
1725
|
+
const scrollContainer = getRootEl();
|
|
1726
|
+
scrollContainer.style.overflow = 'auto';
|
|
1727
|
+
const scrollContainerSpy = jest.spyOn(scrollContainer, 'addEventListener');
|
|
1728
|
+
const windowSpy = jest.spyOn(window, 'addEventListener');
|
|
1729
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1730
|
+
...defaultViewConfig,
|
|
1731
|
+
liveboardId,
|
|
1732
|
+
fullHeight: true,
|
|
1733
|
+
enableScrollableContainerLazyLoading: false,
|
|
1734
|
+
});
|
|
1735
|
+
await liveboardEmbed.render();
|
|
1736
|
+
await executeAfterWait(() => {
|
|
1737
|
+
expect(windowSpy).toHaveBeenCalledWith('scroll', expect.anything(), true);
|
|
1738
|
+
expect(scrollContainerSpy).not.toHaveBeenCalledWith('scroll', expect.any(Function));
|
|
1739
|
+
}, 100);
|
|
1740
|
+
liveboardEmbed.destroy();
|
|
1741
|
+
scrollContainer.style.overflow = '';
|
|
1742
|
+
});
|
|
1743
|
+
test('should wire the window scroll listener to the coordinates sender by default', async () => {
|
|
1744
|
+
const addEventListenerSpy = jest.spyOn(window, 'addEventListener');
|
|
1745
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1746
|
+
...defaultViewConfig,
|
|
1747
|
+
liveboardId,
|
|
1748
|
+
fullHeight: true,
|
|
1749
|
+
});
|
|
1750
|
+
const mockTrigger = jest
|
|
1751
|
+
.spyOn(liveboardEmbed, 'trigger')
|
|
1752
|
+
.mockImplementation(() => Promise.resolve(undefined));
|
|
1753
|
+
await liveboardEmbed.render();
|
|
1754
|
+
await executeAfterWait(() => {
|
|
1755
|
+
const scrollCall = addEventListenerSpy.mock.calls.find(([eventName, , capture]) => eventName === 'scroll' && capture === true);
|
|
1756
|
+
expect(scrollCall).toBeDefined();
|
|
1757
|
+
// Call the handler the way a real scroll event would.
|
|
1758
|
+
scrollCall[1]();
|
|
1759
|
+
expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, expect.objectContaining({ top: expect.any(Number) }));
|
|
1760
|
+
}, 100);
|
|
1761
|
+
liveboardEmbed.destroy();
|
|
1762
|
+
addEventListenerSpy.mockRestore();
|
|
1763
|
+
});
|
|
1764
|
+
test('should remove listeners on destroy when the flags come from defaults', async () => {
|
|
1765
|
+
const removeEventListenerSpy = jest.spyOn(window, 'removeEventListener');
|
|
1766
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1767
|
+
...defaultViewConfig,
|
|
1768
|
+
liveboardId,
|
|
1769
|
+
fullHeight: true,
|
|
1770
|
+
});
|
|
1771
|
+
await liveboardEmbed.render();
|
|
1772
|
+
liveboardEmbed.destroy();
|
|
1773
|
+
expect(removeEventListenerSpy).toHaveBeenCalledWith('resize', expect.anything());
|
|
1774
|
+
expect(removeEventListenerSpy).toHaveBeenCalledWith('scroll', expect.anything(), true);
|
|
1775
|
+
removeEventListenerSpy.mockRestore();
|
|
1776
|
+
});
|
|
1777
|
+
test('should keep an explicit false for the lazy loading flags', async () => {
|
|
1778
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1779
|
+
...defaultViewConfig,
|
|
1780
|
+
liveboardId,
|
|
1781
|
+
fullHeight: true,
|
|
1782
|
+
lazyLoadingForFullHeight: false,
|
|
1783
|
+
enableScrollableContainerLazyLoading: false,
|
|
1784
|
+
lazyLoadingMargin: '0px',
|
|
1785
|
+
});
|
|
1786
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBe(false);
|
|
1787
|
+
expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBe(false);
|
|
1788
|
+
expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBe('0px');
|
|
1789
|
+
});
|
|
1407
1790
|
test('should not set lazyLoadingForEmbed when lazyLoadingForFullHeight is enabled but fullHeight is false', async () => {
|
|
1408
1791
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1409
1792
|
...defaultViewConfig,
|
|
@@ -1468,7 +1851,7 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1468
1851
|
width: 650,
|
|
1469
1852
|
});
|
|
1470
1853
|
});
|
|
1471
|
-
test('should send
|
|
1854
|
+
test('should send visible data when fullHeight is enabled and lazyLoadingForFullHeight is omitted', async () => {
|
|
1472
1855
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1473
1856
|
...defaultViewConfig,
|
|
1474
1857
|
liveboardId,
|
|
@@ -1479,7 +1862,7 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1479
1862
|
await liveboardEmbed.render();
|
|
1480
1863
|
// Trigger the lazy load data calculation
|
|
1481
1864
|
liveboardEmbed.sendFullHeightLazyLoadData();
|
|
1482
|
-
expect(mockTrigger).
|
|
1865
|
+
expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
|
|
1483
1866
|
top: 0,
|
|
1484
1867
|
height: 500,
|
|
1485
1868
|
left: 0,
|
|
@@ -1784,4 +2167,49 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1784
2167
|
});
|
|
1785
2168
|
});
|
|
1786
2169
|
});
|
|
2170
|
+
describe('LiveboardEmbed updatedSpotterExperience tests', () => {
|
|
2171
|
+
beforeEach(() => {
|
|
2172
|
+
document.body.innerHTML = getDocumentBody();
|
|
2173
|
+
});
|
|
2174
|
+
test('should render the liveboard embed with updatedSpotterExperience', async () => {
|
|
2175
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
2176
|
+
...defaultViewConfig,
|
|
2177
|
+
liveboardId,
|
|
2178
|
+
updatedSpotterExperience: true,
|
|
2179
|
+
});
|
|
2180
|
+
await liveboardEmbed.render();
|
|
2181
|
+
await executeAfterWait(() => {
|
|
2182
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&updatedSpotterExperience=true#/embed/viz/${liveboardId}`);
|
|
2183
|
+
});
|
|
2184
|
+
});
|
|
2185
|
+
test('should render the liveboard embed with updatedSpotterExperience disabled', async () => {
|
|
2186
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
2187
|
+
...defaultViewConfig,
|
|
2188
|
+
liveboardId,
|
|
2189
|
+
updatedSpotterExperience: false,
|
|
2190
|
+
});
|
|
2191
|
+
await liveboardEmbed.render();
|
|
2192
|
+
await executeAfterWait(() => {
|
|
2193
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&updatedSpotterExperience=false#/embed/viz/${liveboardId}`);
|
|
2194
|
+
});
|
|
2195
|
+
});
|
|
2196
|
+
describe('trigger typing contracts (compile-time)', () => {
|
|
2197
|
+
it('infers typed response for no-payload calls through the LiveboardEmbed override', () => {
|
|
2198
|
+
const embed = new LiveboardEmbed(getRootEl(), {
|
|
2199
|
+
liveboardId: 'test-liveboard-id',
|
|
2200
|
+
});
|
|
2201
|
+
const getTabs = () => embed.trigger(HostEvent.GetTabs);
|
|
2202
|
+
const tabsIsTyped = false;
|
|
2203
|
+
const tabsHasContractFields = true;
|
|
2204
|
+
const probeUnknownField = (r) =>
|
|
2205
|
+
// @ts-expect-error — field not on the GetTabs contract (was silent when `any`)
|
|
2206
|
+
r.tabCount;
|
|
2207
|
+
void probeUnknownField;
|
|
2208
|
+
const reload = () => embed.trigger(HostEvent.Reload);
|
|
2209
|
+
const reloadStaysAny = true;
|
|
2210
|
+
expect([tabsIsTyped, tabsHasContractFields, reloadStaysAny])
|
|
2211
|
+
.toEqual([false, true, true]);
|
|
2212
|
+
});
|
|
2213
|
+
});
|
|
2214
|
+
});
|
|
1787
2215
|
//# sourceMappingURL=liveboard.spec.js.map
|