@coveo/quantic 3.43.3 → 3.43.4

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 (103) hide show
  1. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/data.ts +130 -0
  2. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/fixture.ts +25 -14
  3. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/quanticBreadcrumbManager.e2e.ts +57 -16
  4. package/force-app/main/default/lwc/quanticCardContainer/quanticCardContainer.css +3 -4
  5. package/force-app/main/default/lwc/quanticCardContainer/quanticCardContainer.html +1 -1
  6. package/force-app/main/default/lwc/quanticCarousel/quanticCarousel.css +5 -5
  7. package/force-app/main/default/lwc/quanticCaseClassification/quanticCaseClassification.css +3 -3
  8. package/force-app/main/default/lwc/quanticCategoryFacet/quanticCategoryFacet.css +1 -1
  9. package/force-app/main/default/lwc/quanticCitation/quanticCitation.css +12 -11
  10. package/force-app/main/default/lwc/quanticDidYouMean/e2e/fixture.ts +6 -2
  11. package/force-app/main/default/lwc/quanticDocumentSuggestion/quanticDocumentSuggestion.css +2 -2
  12. package/force-app/main/default/lwc/quanticFacet/quanticFacet.css +1 -1
  13. package/force-app/main/default/lwc/quanticFacetManager/e2e/data.ts +59 -0
  14. package/force-app/main/default/lwc/quanticFacetManager/e2e/fixture.ts +26 -15
  15. package/force-app/main/default/lwc/quanticFacetManager/e2e/quanticFacetManager.e2e.ts +7 -7
  16. package/force-app/main/default/lwc/quanticFacetStyles/quanticFacetStyles.css +10 -10
  17. package/force-app/main/default/lwc/quanticFeedbackModalQna/templates/quanticFeedbackModalQna.css +1 -1
  18. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/fixture.ts +6 -2
  19. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/agentData.ts +32 -1
  20. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/pageObject.ts +6 -0
  21. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/quanticGeneratedAnswerAgent.e2e.ts +66 -1
  22. package/force-app/main/default/lwc/quanticGeneratedAnswer/quanticGeneratedAnswer.css +1 -1
  23. package/force-app/main/default/lwc/quanticGeneratedAnswer/templates/generatedAnswer.css +3 -3
  24. package/force-app/main/default/lwc/quanticGeneratedAnswerBody/__tests__/quanticGeneratedAnswerBody.test.js +39 -0
  25. package/force-app/main/default/lwc/quanticGeneratedAnswerBody/quanticGeneratedAnswerBody.js +4 -1
  26. package/force-app/main/default/lwc/quanticGeneratedAnswerContent/templates/generatedMarkdownContent.css +21 -21
  27. package/force-app/main/default/lwc/quanticGeneratedAnswerContent/templates/generatedTextContent.css +2 -2
  28. package/force-app/main/default/lwc/quanticGeneratedAnswerFollowUpInput/quanticGeneratedAnswerFollowUpInput.css +9 -9
  29. package/force-app/main/default/lwc/quanticGeneratedAnswerStreamOfThought/quanticGeneratedAnswerStreamOfThought.css +2 -2
  30. package/force-app/main/default/lwc/quanticGeneratedAnswerThread/quanticGeneratedAnswerThread.css +8 -8
  31. package/force-app/main/default/lwc/quanticInsightSummary/quanticInsightSummary.css +2 -1
  32. package/force-app/main/default/lwc/quanticModal/quanticModal.css +3 -3
  33. package/force-app/main/default/lwc/quanticNotifications/e2e/fixture.ts +6 -2
  34. package/force-app/main/default/lwc/quanticNotifications/quanticNotifications.css +2 -2
  35. package/force-app/main/default/lwc/quanticPill/quanticPill.css +2 -2
  36. package/force-app/main/default/lwc/quanticPlaceholder/quanticPlaceholder.css +2 -6
  37. package/force-app/main/default/lwc/quanticPlaceholder/quanticPlaceholder.html +1 -1
  38. package/force-app/main/default/lwc/quanticRadioButtonsGroup/quanticRadioButtonsGroup.css +9 -9
  39. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/fixture.ts +1 -0
  40. package/force-app/main/default/lwc/quanticRecentQueriesList/quanticRecentQueriesList.css +3 -7
  41. package/force-app/main/default/lwc/quanticRecentQueriesList/quanticRecentQueriesList.html +1 -1
  42. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/fixture.ts +1 -0
  43. package/force-app/main/default/lwc/quanticRecentResultsList/quanticRecentResultsList.css +2 -6
  44. package/force-app/main/default/lwc/quanticRecentResultsList/quanticRecentResultsList.html +1 -1
  45. package/force-app/main/default/lwc/quanticRecommendationList/e2e/fixture.ts +1 -0
  46. package/force-app/main/default/lwc/quanticRecommendationList/quanticRecommendationList.css +1 -1
  47. package/force-app/main/default/lwc/quanticRefineToggle/quanticRefineToggle.css +4 -4
  48. package/force-app/main/default/lwc/quanticResultActionStyles/quanticResultActionStyles.css +2 -2
  49. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/fixture.ts +5 -2
  50. package/force-app/main/default/lwc/quanticResultLink/quanticResultLink.css +1 -1
  51. package/force-app/main/default/lwc/quanticResultList/e2e/fixture.ts +6 -2
  52. package/force-app/main/default/lwc/quanticResultPrintableUri/quanticResultPrintableUri.css +1 -1
  53. package/force-app/main/default/lwc/quanticResultQuickview/e2e/fixture.ts +7 -3
  54. package/force-app/main/default/lwc/quanticResultQuickview/quanticResultQuickview.css +6 -6
  55. package/force-app/main/default/lwc/quanticResultTag/quanticResultTag.css +2 -0
  56. package/force-app/main/default/lwc/quanticResultTemplate/quanticResultTemplate.css +1 -1
  57. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/fixture.ts +6 -2
  58. package/force-app/main/default/lwc/quanticSearchBox/e2e/fixture.ts +3 -1
  59. package/force-app/main/default/lwc/quanticSearchBoxInput/templates/defaultSearchBoxInput.css +1 -1
  60. package/force-app/main/default/lwc/quanticSearchBoxInput/templates/expandableSearchBoxInput.css +4 -12
  61. package/force-app/main/default/lwc/quanticSearchBoxInput/templates/expandableSearchBoxInput.html +2 -2
  62. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/fixture.ts +3 -0
  63. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/fixture.ts +6 -4
  64. package/force-app/main/default/lwc/quanticSmartSnippetSource/quanticSmartSnippetSource.css +1 -1
  65. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/fixture.ts +6 -4
  66. package/force-app/main/default/lwc/quanticSort/quanticSort.css +3 -3
  67. package/force-app/main/default/lwc/quanticSourceCitations/quanticSourceCitations.css +1 -1
  68. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/fixture.ts +2 -1
  69. package/force-app/main/default/lwc/quanticStatefulButton/quanticStatefulButton.css +2 -2
  70. package/force-app/main/default/lwc/quanticTab/e2e/fixture.ts +6 -2
  71. package/force-app/main/default/lwc/quanticTabBar/e2e/fixture.ts +6 -2
  72. package/force-app/main/default/lwc/quanticTabBar/e2e/quanticTabBar.e2e.ts +3 -2
  73. package/force-app/main/default/lwc/quanticThreadItem/quanticThreadItem.css +6 -6
  74. package/force-app/main/default/lwc/quanticThreadItem/quanticThreadItem.js +0 -1
  75. package/force-app/main/default/lwc/quanticTimeframeFacet/quanticTimeframeFacet.css +1 -1
  76. package/force-app/main/default/lwc/quanticTooltip/quanticTooltip.css +3 -3
  77. package/force-app/main/default/lwc/quanticUserAction/quanticUserAction.css +7 -7
  78. package/force-app/main/default/lwc/quanticUserActionsSession/quanticUserActionsSession.css +3 -3
  79. package/force-app/main/default/lwc/quanticUserActionsTimeline/templates/userActionsTimeline.css +2 -2
  80. package/force-app/main/default/lwc/searchBoxStyle/searchBoxStyle.css +10 -10
  81. package/force-app/main/default/staticresources/coveoheadless/case-assist/headless.js +17 -17
  82. package/force-app/main/default/staticresources/coveoheadless/definitions/api/analytics/case-assist-analytics.d.ts +2 -1
  83. package/force-app/main/default/staticresources/coveoheadless/definitions/api/analytics/insight-analytics.d.ts +2 -1
  84. package/force-app/main/default/staticresources/coveoheadless/definitions/api/analytics/search-analytics.d.ts +2 -1
  85. package/force-app/main/default/staticresources/coveoheadless/definitions/api/knowledge/stream-answer-api.d.ts +2 -1
  86. package/force-app/main/default/staticresources/coveoheadless/definitions/app/engine-configuration.d.ts +34 -0
  87. package/force-app/main/default/staticresources/coveoheadless/definitions/app/insight-thunk-extra-arguments.d.ts +2 -0
  88. package/force-app/main/default/staticresources/coveoheadless/definitions/app/search-thunk-extra-arguments.d.ts +2 -0
  89. package/force-app/main/default/staticresources/coveoheadless/definitions/app/thunk-extra-arguments.d.ts +9 -0
  90. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/core/generated-answer/headless-core-generated-answer.d.ts +1 -25
  91. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/core/generated-answer/headless-searchapi-generated-answer.d.ts +2 -1
  92. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/field-suggestions/facet/headless-field-suggestions.d.ts +1 -0
  93. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/knowledge/generated-answer/headless-answerapi-generated-answer.d.ts +2 -1
  94. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/knowledge/generated-answer/headless-generated-answer-with-follow-ups.d.ts +2 -1
  95. package/force-app/main/default/staticresources/coveoheadless/definitions/features/analytics/analytics-utils.d.ts +1 -0
  96. package/force-app/main/default/staticresources/coveoheadless/definitions/features/attached-results/attached-results-analytics-actions.d.ts +4 -0
  97. package/force-app/main/default/staticresources/coveoheadless/definitions/features/generated-answer/generated-answer-analytics-client.d.ts +38 -0
  98. package/force-app/main/default/staticresources/coveoheadless/definitions/features/generated-answer/generated-answer-insight-analytics-actions.d.ts +2 -2
  99. package/force-app/main/default/staticresources/coveoheadless/definitions/features/result/result-insight-analytics-actions.d.ts +1 -0
  100. package/force-app/main/default/staticresources/coveoheadless/headless.js +17 -17
  101. package/force-app/main/default/staticresources/coveoheadless/insight/headless.js +16 -16
  102. package/force-app/main/default/staticresources/coveoheadless/recommendation/headless.js +16 -16
  103. package/package.json +3 -3
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Facet response builders for the breadcrumb manager example page
3
+ * (`exampleQuanticBreadcrumbManager.html`), which registers four facets:
4
+ * filetype (regular), ytlikecount (numeric), date (timeframe), and
5
+ * geographicalhierarchy (category).
6
+ */
7
+ type State = 'idle' | 'selected';
8
+
9
+ const filetypeFacet = (state: State = 'idle') => ({
10
+ facetId: 'filetype',
11
+ field: 'filetype',
12
+ moreValuesAvailable: false,
13
+ values: [
14
+ {value: 'YouTubeVideo', state, numberOfResults: 100},
15
+ {value: 'txt', state: 'idle', numberOfResults: 50},
16
+ ],
17
+ indexScore: 0.5,
18
+ });
19
+
20
+ const numericFacet = (state: State = 'idle') => ({
21
+ facetId: 'ytlikecount',
22
+ field: 'ytlikecount',
23
+ moreValuesAvailable: false,
24
+ values: [
25
+ {start: 0, end: 1000, endInclusive: false, state, numberOfResults: 100},
26
+ {
27
+ start: 1000,
28
+ end: 2000,
29
+ endInclusive: false,
30
+ state: 'idle',
31
+ numberOfResults: 50,
32
+ },
33
+ ],
34
+ indexScore: 0.4,
35
+ });
36
+
37
+ const timeframeFacet = (state: State = 'idle') => ({
38
+ facetId: 'date',
39
+ field: 'date',
40
+ moreValuesAvailable: false,
41
+ values: [
42
+ {start: 'past-1-week', end: 'now', endInclusive: false, state, numberOfResults: 100},
43
+ {
44
+ start: 'past-1-month',
45
+ end: 'now',
46
+ endInclusive: false,
47
+ state: 'idle',
48
+ numberOfResults: 50,
49
+ },
50
+ {
51
+ start: 'past-6-month',
52
+ end: 'now',
53
+ endInclusive: false,
54
+ state: 'idle',
55
+ numberOfResults: 40,
56
+ },
57
+ {
58
+ start: 'past-1-year',
59
+ end: 'now',
60
+ endInclusive: false,
61
+ state: 'idle',
62
+ numberOfResults: 30,
63
+ },
64
+ {
65
+ start: 'past-10-year',
66
+ end: 'now',
67
+ endInclusive: false,
68
+ state: 'idle',
69
+ numberOfResults: 20,
70
+ },
71
+ ],
72
+ indexScore: 0.3,
73
+ });
74
+
75
+ const categoryFacet = (state: State = 'idle') => ({
76
+ facetId: 'geographicalhierarchy',
77
+ field: 'geographicalhierarchy',
78
+ moreValuesAvailable: false,
79
+ values:
80
+ state === 'selected'
81
+ ? [
82
+ {
83
+ value: 'North America',
84
+ state: 'selected',
85
+ numberOfResults: 100,
86
+ children: [],
87
+ path: ['North America'],
88
+ isLeafValue: false,
89
+ },
90
+ ]
91
+ : [
92
+ {
93
+ value: 'North America',
94
+ state: 'idle',
95
+ numberOfResults: 100,
96
+ children: [],
97
+ path: ['North America'],
98
+ isLeafValue: false,
99
+ },
100
+ {
101
+ value: 'Africa',
102
+ state: 'idle',
103
+ numberOfResults: 50,
104
+ children: [],
105
+ path: ['Africa'],
106
+ isLeafValue: false,
107
+ },
108
+ ],
109
+ indexScore: 0.2,
110
+ });
111
+
112
+ const allFacets = (selected?: 'regular' | 'numeric' | 'timeframe' | 'category') => [
113
+ filetypeFacet(selected === 'regular' ? 'selected' : 'idle'),
114
+ numericFacet(selected === 'numeric' ? 'selected' : 'idle'),
115
+ timeframeFacet(selected === 'timeframe' ? 'selected' : 'idle'),
116
+ categoryFacet(selected === 'category' ? 'selected' : 'idle'),
117
+ ];
118
+
119
+ export const allIdle = allFacets();
120
+ export const regularSelected = allFacets('regular');
121
+ export const numericSelected = allFacets('numeric');
122
+ export const timeframeSelected = allFacets('timeframe');
123
+ export const categorySelected = allFacets('category');
124
+
125
+ export const regularAndTimeframeSelected = [
126
+ filetypeFacet('selected'),
127
+ numericFacet('idle'),
128
+ timeframeFacet('selected'),
129
+ categoryFacet('idle'),
130
+ ];
@@ -1,12 +1,13 @@
1
1
  import {BreadcrumbManagerObject} from './pageObject';
2
- import {quanticBase} from '../../../../../../playwright/fixtures/baseFixture';
3
- import {SearchObject} from '../../../../../../playwright/page-object/searchObject';
2
+ import {facetBase} from '../../../../../../playwright/fixtures/baseFacetFixture';
3
+ import {BaseFacetObject} from '../../../../../../playwright/page-object/baseFacetObject';
4
4
  import {
5
5
  searchRequestRegex,
6
6
  insightSearchRequestRegex,
7
7
  } from '../../../../../../playwright/utils/requests';
8
8
  import {InsightSetupObject} from '../../../../../../playwright/page-object/insightSetupObject';
9
9
  import {useCaseEnum} from '../../../../../../playwright/utils/useCase';
10
+ import {allIdle} from './data';
10
11
 
11
12
  const breadcrumbManagerUrl = 's/quantic-breadcrumb-manager';
12
13
 
@@ -17,7 +18,6 @@ interface BreadcrumbManagerOptions {
17
18
 
18
19
  type QuanticBreadcrumbManagerE2EFixtures = {
19
20
  breadcrumbManager: BreadcrumbManagerObject;
20
- search: SearchObject;
21
21
  options: Partial<BreadcrumbManagerOptions>;
22
22
  };
23
23
 
@@ -32,43 +32,54 @@ type QuanticBreadcrumbManagerE2eInsightFixtures =
32
32
  };
33
33
 
34
34
  export const testSearch =
35
- quanticBase.extend<QuanticBreadcrumbManagerE2ESearchFixtures>({
35
+ facetBase.extend<QuanticBreadcrumbManagerE2ESearchFixtures>({
36
36
  options: {},
37
37
  urlHash: '',
38
- search: async ({page}, use) => {
39
- await use(new SearchObject(page, searchRequestRegex));
38
+ facetResponses: {responses: [allIdle]},
39
+ baseFacet: async ({page}, use) => {
40
+ await use(new BaseFacetObject(page, searchRequestRegex));
40
41
  },
41
42
  breadcrumbManager: async (
42
- {page, options, configuration, search, urlHash},
43
+ {page, options, configuration, baseFacet, urlHash, facetResponses},
43
44
  use
44
45
  ) => {
46
+ await baseFacet.mockSearchWithBaseResponse();
45
47
  await page.goto(
46
48
  urlHash ? `${breadcrumbManagerUrl}#${urlHash}` : breadcrumbManagerUrl
47
49
  );
50
+ await baseFacet.mockSearchWithFacetResponseSequence(
51
+ facetResponses?.responses
52
+ );
48
53
  configuration.configure(options);
49
- await search.waitForSearchResponse();
54
+ await baseFacet.waitForSearchResponse();
50
55
  await use(new BreadcrumbManagerObject(page));
51
56
  },
52
57
  });
53
58
 
54
59
  export const testInsight =
55
- quanticBase.extend<QuanticBreadcrumbManagerE2eInsightFixtures>({
60
+ facetBase.extend<QuanticBreadcrumbManagerE2eInsightFixtures>({
56
61
  options: {},
57
- search: async ({page}, use) => {
58
- await use(new SearchObject(page, insightSearchRequestRegex));
62
+ facetResponses: {responses: [allIdle]},
63
+ baseFacet: async ({page}, use) => {
64
+ await use(new BaseFacetObject(page, insightSearchRequestRegex));
59
65
  },
60
66
  insightSetup: async ({page}, use) => {
61
67
  await use(new InsightSetupObject(page));
62
68
  },
63
69
  breadcrumbManager: async (
64
- {page, options, search, configuration, insightSetup},
70
+ {page, options, baseFacet, configuration, insightSetup, facetResponses},
65
71
  use
66
72
  ) => {
67
73
  await page.goto(breadcrumbManagerUrl);
74
+ await baseFacet.mockSearchWithFacetResponseSequence(
75
+ facetResponses?.responses
76
+ );
68
77
  configuration.configure({...options, useCase: useCaseEnum.insight});
69
78
  await insightSetup.waitForInsightInterfaceInitialization();
70
- await search.performSearch();
71
- await search.waitForSearchResponse();
79
+ await Promise.all([
80
+ baseFacet.waitForSearchResponse(),
81
+ baseFacet.performSearch(),
82
+ ]);
72
83
  await use(new BreadcrumbManagerObject(page));
73
84
  },
74
85
  });
@@ -3,6 +3,14 @@ import {
3
3
  useCaseEnum,
4
4
  useCaseTestCases,
5
5
  } from '../../../../../../playwright/utils/useCase';
6
+ import {
7
+ regularSelected,
8
+ numericSelected,
9
+ timeframeSelected,
10
+ categorySelected,
11
+ regularAndTimeframeSelected,
12
+ allIdle,
13
+ } from './data';
6
14
 
7
15
  const fixtures = {
8
16
  search: testSearch,
@@ -23,17 +31,22 @@ useCaseTestCases.forEach((useCase) => {
23
31
  test.describe(`quantic breadcrumb manager ${useCase.label}`, () => {
24
32
  test.describe('when de-selecting a facet value', () => {
25
33
  test.describe('with regular facet values', () => {
34
+ test.use({
35
+ facetResponses: {
36
+ responses: [allIdle, regularSelected, allIdle],
37
+ },
38
+ });
26
39
  test('should trigger a new search and log analytics', async ({
27
40
  breadcrumbManager,
28
- search,
41
+ baseFacet,
29
42
  }) => {
30
43
  const firstRegularFacetValue =
31
44
  await breadcrumbManager.firstRegularFacetValue;
32
- const searchResponsePromise = search.waitForSearchResponse();
45
+ const searchResponsePromise = baseFacet.waitForSearchResponse();
33
46
  await breadcrumbManager.clickFirstRegularFacetLink();
34
47
  await searchResponsePromise;
35
48
 
36
- const secondSearchResponsePromise = search.waitForSearchResponse();
49
+ const secondSearchResponsePromise = baseFacet.waitForSearchResponse();
37
50
  const breadcrumbAnalyticsPromise =
38
51
  breadcrumbManager.waitForBreadcrumbFacetUaAnalytics({
39
52
  facetValue: firstRegularFacetValue,
@@ -45,18 +58,23 @@ useCaseTestCases.forEach((useCase) => {
45
58
  });
46
59
 
47
60
  test.describe('with numeric facet values', () => {
61
+ test.use({
62
+ facetResponses: {
63
+ responses: [allIdle, numericSelected, allIdle],
64
+ },
65
+ });
48
66
  test('should trigger a new search and log analytics', async ({
49
67
  breadcrumbManager,
50
- search,
68
+ baseFacet,
51
69
  }) => {
52
70
  const [facetRangeStart, facetRangeEnd] =
53
71
  (await breadcrumbManager.firstNumericFacetValue)?.split(' - ') ??
54
72
  [];
55
- const searchResponsePromise = search.waitForSearchResponse();
73
+ const searchResponsePromise = baseFacet.waitForSearchResponse();
56
74
  await breadcrumbManager.clickFirstNumericFacetLink();
57
75
  await searchResponsePromise;
58
76
 
59
- const secondSearchResponsePromise = search.waitForSearchResponse();
77
+ const secondSearchResponsePromise = baseFacet.waitForSearchResponse();
60
78
  // We use the facet display value to compare, but the display value is localized and can contain non-numeric characters while the analytics request doesn't contain those characters.
61
79
  const breadcrumbAnalyticsPromise =
62
80
  breadcrumbManager.waitForBreadcrumbFacetUaAnalytics({
@@ -70,17 +88,22 @@ useCaseTestCases.forEach((useCase) => {
70
88
  });
71
89
 
72
90
  test.describe('with timeframe|date facet values', () => {
91
+ test.use({
92
+ facetResponses: {
93
+ responses: [allIdle, timeframeSelected, allIdle],
94
+ },
95
+ });
73
96
  test('should trigger a new search and log analytics', async ({
74
97
  breadcrumbManager,
75
- search,
98
+ baseFacet,
76
99
  }) => {
77
100
  const facetValue = await breadcrumbManager.firstTimeframeFacetValue;
78
101
  test.expect(facetValue).not.toBeNull();
79
- const searchResponsePromise = search.waitForSearchResponse();
102
+ const searchResponsePromise = baseFacet.waitForSearchResponse();
80
103
  await breadcrumbManager.clickFirstTimeframeFacetLink();
81
104
  await searchResponsePromise;
82
105
 
83
- const secondSearchResponsePromise = search.waitForSearchResponse();
106
+ const secondSearchResponsePromise = baseFacet.waitForSearchResponse();
84
107
  // We use the facet display value to compare, but the display value is prettified and is transformed to be human readable, while the analytics request isn't.
85
108
  const [expectedFacetRangeStart, expectedFacetRangeEnd] =
86
109
  datetimeFacetLabelToValue[facetValue!].split('..');
@@ -96,17 +119,22 @@ useCaseTestCases.forEach((useCase) => {
96
119
  });
97
120
 
98
121
  test.describe('with category facet values', () => {
122
+ test.use({
123
+ facetResponses: {
124
+ responses: [allIdle, categorySelected, allIdle],
125
+ },
126
+ });
99
127
  test('should trigger a new search and log analytics', async ({
100
128
  breadcrumbManager,
101
- search,
129
+ baseFacet,
102
130
  }) => {
103
131
  const facetValue = await breadcrumbManager.firstCategoryFacetValue;
104
132
  test.expect(facetValue).not.toBeNull();
105
- const searchResponsePromise = search.waitForSearchResponse();
133
+ const searchResponsePromise = baseFacet.waitForSearchResponse();
106
134
  await breadcrumbManager.clickFirstCategoryFacetLink();
107
135
  await searchResponsePromise;
108
136
 
109
- const secondSearchResponsePromise = search.waitForSearchResponse();
137
+ const secondSearchResponsePromise = baseFacet.waitForSearchResponse();
110
138
  const expectedFacetValue = facetValue!;
111
139
  const breadcrumbAnalyticsPromise =
112
140
  breadcrumbManager.waitForBreadcrumbFacetUaAnalytics({
@@ -120,20 +148,30 @@ useCaseTestCases.forEach((useCase) => {
120
148
  });
121
149
 
122
150
  test.describe('when clicking on the clear all filters button', () => {
151
+ test.use({
152
+ facetResponses: {
153
+ responses: [
154
+ allIdle,
155
+ regularSelected,
156
+ regularAndTimeframeSelected,
157
+ allIdle,
158
+ ],
159
+ },
160
+ });
123
161
  test('should send a clear all filters analytics event and clear all selected facets values', async ({
124
162
  breadcrumbManager,
125
- search,
163
+ baseFacet,
126
164
  }) => {
127
- const searchResponsePromise = search.waitForSearchResponse();
165
+ const searchResponsePromise = baseFacet.waitForSearchResponse();
128
166
  await breadcrumbManager.clickFirstRegularFacetLink();
129
167
  await searchResponsePromise;
130
168
 
131
- const searchResponsePromiseTwo = search.waitForSearchResponse();
169
+ const searchResponsePromiseTwo = baseFacet.waitForSearchResponse();
132
170
  await breadcrumbManager.clickFirstTimeframeFacetLink();
133
171
  await searchResponsePromiseTwo;
134
172
 
135
173
  await test.expect(breadcrumbManager.clearAllButton).toBeVisible();
136
- const clearAllSearchResponsePromise = search.waitForSearchResponse();
174
+ const clearAllSearchResponsePromise = baseFacet.waitForSearchResponse();
137
175
  const clearAllAnalyticsPromise =
138
176
  breadcrumbManager.waitForBreadcrumbResetAllUaAnalytics();
139
177
  await breadcrumbManager.clickClearAllButton();
@@ -152,6 +190,9 @@ useCaseTestCases.forEach((useCase) => {
152
190
  const facetSelectedHash = 'f-filetype=YouTubeVideo';
153
191
  test.use({
154
192
  urlHash: facetSelectedHash,
193
+ facetResponses: {
194
+ responses: [regularSelected],
195
+ },
155
196
  });
156
197
 
157
198
  test('should have a facet selected in the breadcrumb manager', async ({
@@ -1,9 +1,8 @@
1
1
  .card {
2
2
  position: relative;
3
- padding: 1rem 0.9rem;
4
- background: var(--lwc-colorBackgroundAlt, #ffffff);
5
- border: var(--lwc-borderWidthThin, 1px) solid var(--lwc-colorBorder, #dddbda);
6
- border-radius: 0.25rem;
3
+ background: var(--slds-g-color-surface-1, var(--lwc-colorBackgroundAlt, #ffffff));
4
+ border: var(--slds-g-sizing-border-1, var(--lwc-borderWidthThin, 1px)) solid var(--slds-g-color-neutral-base-90, var(--lwc-colorBorder, #dddbda));
5
+ border-radius: var(--slds-g-radius-border-2, 0.25rem);
7
6
  background-clip: padding-box;
8
7
  -webkit-box-shadow: 0 2px 2px 0 rgb(0 0 0 / 10%);
9
8
  box-shadow: 0 2px 2px 0 rgb(0 0 0 / 10%);
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <host>
3
- <article class="card">
3
+ <article class="card slds-p-around_medium">
4
4
  <header class="slds-grid slds-p-horizontal_x-small slds-has-flexi-truncate">
5
5
  <div class="slds-media__body card_focusable-header" onclick={handleHeaderClick} onkeydown={handleHeaderKeyDown}
6
6
  role="button" tabindex="0" data-testid="card-container__header">
@@ -13,19 +13,19 @@
13
13
 
14
14
  .carousel__indicator {
15
15
  width: 3.25rem;
16
- height: 0.25rem;
16
+ height: var(--slds-g-sizing-2, 0.25rem);
17
17
  border: 0;
18
- border-radius: var(--lwc-borderRadiusMedium, 0.25rem);
19
- background-color: var(--lwc-brandLightActive, #e3e5ed);
18
+ border-radius: var(--slds-g-radius-border-2, var(--lwc-borderRadiusMedium, 0.25rem));
19
+ background-color: var(--slds-g-color-accent-light-1, var(--lwc-brandLightActive, #e3e5ed));
20
20
  transition: 0.2s;
21
21
  }
22
22
 
23
23
  .carousel__indicator--active {
24
- background-color: var(--lwc-brandPrimary, #1b96ff);
24
+ background-color: var(--slds-g-color-accent-1, var(--lwc-brandPrimary, #1b96ff));
25
25
  }
26
26
 
27
27
  .carousel__indicator:hover {
28
- background-color: var(--lwc-brandPrimaryActive, #0176d3);
28
+ background-color: var(--slds-g-color-accent-2, var(--lwc-brandPrimaryActive, #0176d3));
29
29
  }
30
30
 
31
31
  .carousel__previous-navigation {
@@ -28,7 +28,7 @@ lightning-icon {
28
28
  }
29
29
 
30
30
  .slds-visual-picker input:checked ~ label .visual-picker__figure:after {
31
- border-right-color: var(--lwc-colorBorderRowSelectedHover, rgb(27, 150, 255));
32
- border-top-color: var(--lwc-colorBorderRowSelectedHover, rgb(27, 150, 255));
33
- border-radius: 4px;
31
+ border-right-color: var(--slds-g-color-brand-base-50, var(--lwc-colorBorderRowSelectedHover, rgb(27, 150, 255)));
32
+ border-top-color: var(--slds-g-color-brand-base-50, var(--lwc-colorBorderRowSelectedHover, rgb(27, 150, 255)));
33
+ border-radius: var(--slds-g-radius-border-2, 4px);
34
34
  }
@@ -1,6 +1,6 @@
1
1
  @import 'c/quanticFacetStyles';
2
2
 
3
3
  .facet__search-results_more-matches {
4
- color: #8E959D;
4
+ color: var(--slds-g-color-palette-neutral-60, #8E959D);
5
5
  font-size: var(--slds-g-font-scale-neg-1, 12px);
6
6
  }
@@ -1,29 +1,30 @@
1
1
  .citation:hover {
2
2
  cursor: pointer;
3
- color: var(--lwc-brandAccessible, #0176d3);
3
+ color: var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0176d3));
4
4
  }
5
5
 
6
6
  .citation__link {
7
7
  max-width: 10.625rem;
8
- height: 2rem;
8
+ height: var(--slds-g-sizing-9, 2rem);
9
+ border-radius: var(--slds-g-radius-border-2, 0.25rem);
9
10
  }
10
11
 
11
12
  .citation__link:hover {
12
- background-color: var(--lwc-brandLight, #f4f6fe);
13
+ background-color: var(--slds-g-color-accent-light-1, var(--lwc-brandLight, #f4f6fe));
13
14
  }
14
15
 
15
16
  .citation__link:focus {
16
- border: 1px solid var(--lwc-brandAccessible, #0070d2);
17
- box-shadow: 0 0 3px 0 var(--lwc-brandAccessible, #0070d2);
17
+ border: var(--slds-g-sizing-border-1, 1px) solid var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0070d2));
18
+ box-shadow: 0 0 3px 0 var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0070d2));
18
19
  }
19
20
 
20
21
  .citation__link:hover .citation__title {
21
- color: var(--lwc-brandAccessible, #0176d3);
22
+ color: var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0176d3));
22
23
  }
23
24
 
24
25
  .citation__title {
25
26
  font-weight: var(--lwc-fontWeightRegular, 400);
26
- color: var(--lwc-colorTextPlaceholder, #747474);
27
+ color: var(--slds-g-color-on-surface-1, var(--lwc-colorTextPlaceholder, #747474));
27
28
  font-size: var(--slds-g-font-size-base, 13px);
28
29
  }
29
30
 
@@ -35,18 +36,18 @@
35
36
  }
36
37
 
37
38
  .citation__tooltip {
38
- color: rgb(26, 27, 30);
39
+ color: var(--slds-g-color-on-surface-3, rgb(26, 27, 30));
39
40
  cursor: default;
40
41
  }
41
42
 
42
43
  .citation__link--active {
43
- border-color: var(--lwc-brandAccessible, #0176d3);
44
+ border-color: var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0176d3));
44
45
  }
45
46
 
46
47
  .citation__title--active {
47
- color: var(--lwc-brandAccessible, #0176d3);
48
+ color: var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0176d3));
48
49
  }
49
50
 
50
51
  .citation__icon--active {
51
- --slds-c-icon-color-foreground-default: var(--lwc-brandAccessible, #0176d3);
52
+ --slds-c-icon-color-foreground-default: var(--slds-g-color-accent-container-1, var(--lwc-brandAccessible, #0176d3));
52
53
  }
@@ -44,6 +44,7 @@ export const testSearch =
44
44
  );
45
45
  },
46
46
  didYouMean: async ({page, options, configuration, search}, use) => {
47
+ await search.mockSearchWithBaseResponse();
47
48
  await page.goto(pageUrl);
48
49
  configuration.configure(options);
49
50
  await search.waitForSearchResponse();
@@ -68,11 +69,14 @@ export const testInsight =
68
69
  {page, options, search, configuration, insightSetup},
69
70
  use
70
71
  ) => {
72
+ await search.mockSearchWithBaseResponse();
71
73
  await page.goto(pageUrl);
72
74
  configuration.configure({...options, useCase: useCaseEnum.insight});
73
75
  await insightSetup.waitForInsightInterfaceInitialization();
74
- await search.performSearch();
75
- await search.waitForSearchResponse();
76
+ await Promise.all([
77
+ search.waitForSearchResponse(),
78
+ search.performSearch(),
79
+ ]);
76
80
  await use(new DidYouMeanObject(page));
77
81
  },
78
82
  });
@@ -7,9 +7,9 @@
7
7
  }
8
8
 
9
9
  .card-border {
10
- border: 1px solid #dddbda;
10
+ border: var(--slds-g-sizing-border-1, 1px) solid var(--slds-g-color-border-1, #dddbda);
11
11
  }
12
12
 
13
13
  .no-suggestion-message {
14
- background-color: #f6f7f9;
14
+ background-color: var(--slds-g-color-surface-2, #f6f7f9);
15
15
  }
@@ -1,6 +1,6 @@
1
1
  @import 'c/quanticFacetStyles';
2
2
 
3
3
  .facet__search-results_more-matches{
4
- color: #8e959d;
4
+ color: var(--slds-g-color-palette-neutral-60, #8e959d);
5
5
  font-size: var(--slds-g-font-scale-neg-1, 12px);
6
6
  }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Facet response builder for the facet manager example page
3
+ * (`exampleQuanticFacetManager.html`), which registers three facets:
4
+ * a `language` facet, a `date` timeframe facet, and an `objecttype` facet.
5
+ */
6
+ const facetManagerData = [
7
+ {
8
+ facetId: 'language',
9
+ field: 'language',
10
+ moreValuesAvailable: false,
11
+ values: [{value: 'English', state: 'idle', numberOfResults: 100}],
12
+ indexScore: 0.3,
13
+ },
14
+ {
15
+ facetId: 'date',
16
+ field: 'date',
17
+ moreValuesAvailable: false,
18
+ values: [
19
+ {
20
+ start: 'past-1-week',
21
+ end: 'now',
22
+ endInclusive: false,
23
+ state: 'idle',
24
+ numberOfResults: 10,
25
+ },
26
+ {
27
+ start: 'past-1-month',
28
+ end: 'now',
29
+ endInclusive: false,
30
+ state: 'idle',
31
+ numberOfResults: 20,
32
+ },
33
+ {
34
+ start: 'past-6-month',
35
+ end: 'now',
36
+ endInclusive: false,
37
+ state: 'idle',
38
+ numberOfResults: 30,
39
+ },
40
+ {
41
+ start: 'past-1-year',
42
+ end: 'now',
43
+ endInclusive: false,
44
+ state: 'idle',
45
+ numberOfResults: 40,
46
+ },
47
+ ],
48
+ indexScore: 0.2,
49
+ },
50
+ {
51
+ facetId: 'objecttype',
52
+ field: 'objecttype',
53
+ moreValuesAvailable: false,
54
+ values: [{value: 'People', state: 'idle', numberOfResults: 50}],
55
+ indexScore: 0.1,
56
+ },
57
+ ];
58
+
59
+ export default facetManagerData;