Skip to content

Commit

Permalink
EventsSDK: Merge v1.0.0-beta.2 to main (#114)
Browse files Browse the repository at this point in the history
dev/unified-sdk and main are not in sync with one another. Following the
instructions
[here](https://stackoverflow.com/questions/2862590/how-to-replace-master-branch-in-git-entirely-from-another-branch),
this change replaces main with dev/unified-sdk. dev/repair represents
this state of main.

This change also bumps the version number at all references.
  • Loading branch information
ejaffee01 authored Oct 17, 2023
1 parent 2d89b82 commit 6cebbf3
Show file tree
Hide file tree
Showing 18 changed files with 128 additions and 37 deletions.
8 changes: 8 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Format the world using Prettier and ESLint
f042747aa077cda1a01a2b72ae8178c3ac04416a
e025cf5b6fd6e931ecfd2084d139ab16a467f2a9
145df870a884d47a6c6c5cfe98c3968d28b54322
32b45da66948c5f956299282cb81e5f6950143d3
ed8b21a0bd02de7a01aa3814f4f7443f834d3d71
15160fe11d7c016eedaf9e1eacd54253ff57a9ba
5dcdb2c56eff6d9527557e30b8d0fd7a4c144ff4
5 changes: 2 additions & 3 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ jobs:
with:
node-version: 18
- name: Install dependencies
run: npm ci && npm i --prefix ./test-site
run: npm ci
- name: build package
run: npm run build
- name: Run Playwright tests
env:
# Refer to: https://github.com/microsoft/playwright/issues/6500#issuecomment-1577221956
HOME: /root
run: npx playwright test

run: npx playwright test
2 changes: 1 addition & 1 deletion docs/analytics.action.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ The action types accepted by the Analytics Events API.
<b>Signature:</b>

```typescript
export declare type Action = `C_${string}` | `c_${string}` | 'ADD_TO_CART' | 'ALL_TAB_NAVIGATION' | 'APPLY' | 'AUTO_COMPLETE_SELECTION' | 'BACKWARD_PAGINATE' | 'BOOK' | 'BRAND_ICON' | 'CALL_TO_ACTION' | 'CASE_START' | 'CASE_SUBMITTED' | 'CHAT_IMPRESSION' | 'CHAT_LINK_CLICK' | 'CHAT_RESPONSE' | 'COLLAPSE' | 'DIRECTIONS' | 'EVENT' | 'EXPAND' | 'FEATURED_MESSAGE' | 'FILTERING_WITHIN_SECTION' | 'FORWARD_PAGINATE' | 'HEADER_LINKS' | 'ITEM_IN_LIST' | 'MAP_CARD' | 'MAP_PIN' | 'MENU' | 'MESSAGE' | 'ORDER' | 'PAGINATE' | 'PHONE' | 'POST' | 'PRESET_PROMPT' | 'PRODUCT' | 'PROFILE' | 'QUESTION_FOCUS' | 'QUESTION_SUBMIT' | 'REMOVED_FILTER' | 'REVIEW' | 'SCROLL_TO_BOTTOM_OF_PAGE' | 'SEARCH_BAR_IMPRESSION' | 'SEARCH_CLEAR_BUTTON' | 'THUMBS_DOWN' | 'THUMBS_UP' | 'TICKET_URL' | 'TITLE' | 'VERTICAL_TAB_NAVIGATION' | 'VERTICAL_VIEW_ALL' | 'VOICE_START' | 'VOICE_STOP' | 'WEBSITE';
export declare type Action = `C_${string}` | `c_${string}` | 'ADD_TO_CART' | 'ALL_TAB_NAVIGATION' | 'APPLY' | 'AUTO_COMPLETE_SELECTION' | 'BACKWARD_PAGINATE' | 'BOOK' | 'BRAND_ICON' | 'CASE_START' | 'CASE_SUBMITTED' | 'CHAT_IMPRESSION' | 'CHAT_LINK_CLICK' | 'CHAT_RESPONSE' | 'COLLAPSE' | 'CTA_CLICK' | 'DRIVING_DIRECTIONS' | 'EVENT' | 'EXPAND' | 'FEATURED_MESSAGE' | 'FILTERING_WITHIN_SECTION' | 'FORWARD_PAGINATE' | 'HEADER_LINKS' | 'ITEM_IN_LIST' | 'MAP_CARD' | 'MAP_PIN' | 'MENU' | 'MESSAGE' | 'ORDER' | 'PAGINATE' | 'POST' | 'PRESET_PROMPT' | 'PRODUCT' | 'PROFILE' | 'QUESTION_FOCUS' | 'QUESTION_SUBMIT' | 'REMOVED_FILTER' | 'REVIEW' | 'SCROLL_TO_BOTTOM_OF_PAGE' | 'SEARCH_BAR_IMPRESSION' | 'SEARCH_CLEAR_BUTTON' | 'TAP_TO_CALL' | 'THUMBS_DOWN' | 'THUMBS_UP' | 'TICKET_URL' | 'TITLE' | 'VERTICAL_TAB_NAVIGATION' | 'VERTICAL_VIEW_ALL' | 'VOICE_START' | 'VOICE_STOP' | 'WEBSITE';
```
3 changes: 2 additions & 1 deletion docs/analytics.eventpayload.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ export interface EventPayload
| [locale?](./analytics.eventpayload.locale.md) | string | <i>(Optional)</i> The locale of the user who generated the event. |
| [pageUrl?](./analytics.eventpayload.pageurl.md) | string | <i>(Optional)</i> The URL of the page where the event occurred |
| [referrerUrl?](./analytics.eventpayload.referrerurl.md) | string | <i>(Optional)</i> The URL of the page which the visitor came from prior to the event. |
| [search?](./analytics.eventpayload.search.md) | { searchId?: string; queryId?: string; verticalKey?: string; isDirectAnswer?: boolean; versionLabel?: [VersionLabel](./analytics.versionlabel.md)<!-- -->; versionNumber?: number; experienceKey: string; } | <i>(Optional)</i> Fields specific to reporting Search Analytics Events |
| [search?](./analytics.eventpayload.search.md) | { searchId?: string; queryId?: string; verticalKey?: string; isDirectAnswer?: boolean; versionLabel?: [VersionLabel](./analytics.versionlabel.md)<!-- -->; versionNumber?: number; experienceKey: string; } | <i>(Optional)</i> Fields specific to reporting Yext Search Analytics Events |
| [sessionId?](./analytics.eventpayload.sessionid.md) | string \| null | <i>(Optional)</i> Unique identifier to tie together events in a single browsing session |
| [sites?](./analytics.eventpayload.sites.md) | { siteUid?: number; template?: string; } | <i>(Optional)</i> Fields specific to reporting Yext Pages Analytics Events |
| [timestamp?](./analytics.eventpayload.timestamp.md) | Date \| string | <i>(Optional)</i> The timestamp at which the event occurred, in ISO format. |
| [visitor?](./analytics.eventpayload.visitor.md) | Record&lt;string, string&gt; | <i>(Optional)</i> Information used to associate analytics with a particular user. |

2 changes: 1 addition & 1 deletion docs/analytics.eventpayload.search.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## EventPayload.search property

Fields specific to reporting Search Analytics Events
Fields specific to reporting Yext Search Analytics Events

<b>Signature:</b>

Expand Down
16 changes: 16 additions & 0 deletions docs/analytics.eventpayload.sites.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@yext/analytics](./analytics.md) &gt; [EventPayload](./analytics.eventpayload.md) &gt; [sites](./analytics.eventpayload.sites.md)

## EventPayload.sites property

Fields specific to reporting Yext Pages Analytics Events

<b>Signature:</b>

```typescript
sites?: {
siteUid?: number;
template?: string;
};
```
6 changes: 5 additions & 1 deletion etc/analytics.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
```ts

// @public
export type Action = `C_${string}` | `c_${string}` | 'ADD_TO_CART' | 'ALL_TAB_NAVIGATION' | 'APPLY' | 'AUTO_COMPLETE_SELECTION' | 'BACKWARD_PAGINATE' | 'BOOK' | 'BRAND_ICON' | 'CALL_TO_ACTION' | 'CASE_START' | 'CASE_SUBMITTED' | 'CHAT_IMPRESSION' | 'CHAT_LINK_CLICK' | 'CHAT_RESPONSE' | 'COLLAPSE' | 'DIRECTIONS' | 'EVENT' | 'EXPAND' | 'FEATURED_MESSAGE' | 'FILTERING_WITHIN_SECTION' | 'FORWARD_PAGINATE' | 'HEADER_LINKS' | 'ITEM_IN_LIST' | 'MAP_CARD' | 'MAP_PIN' | 'MENU' | 'MESSAGE' | 'ORDER' | 'PAGINATE' | 'PHONE' | 'POST' | 'PRESET_PROMPT' | 'PRODUCT' | 'PROFILE' | 'QUESTION_FOCUS' | 'QUESTION_SUBMIT' | 'REMOVED_FILTER' | 'REVIEW' | 'SCROLL_TO_BOTTOM_OF_PAGE' | 'SEARCH_BAR_IMPRESSION' | 'SEARCH_CLEAR_BUTTON' | 'THUMBS_DOWN' | 'THUMBS_UP' | 'TICKET_URL' | 'TITLE' | 'VERTICAL_TAB_NAVIGATION' | 'VERTICAL_VIEW_ALL' | 'VOICE_START' | 'VOICE_STOP' | 'WEBSITE';
export type Action = `C_${string}` | `c_${string}` | 'ADD_TO_CART' | 'ALL_TAB_NAVIGATION' | 'APPLY' | 'AUTO_COMPLETE_SELECTION' | 'BACKWARD_PAGINATE' | 'BOOK' | 'BRAND_ICON' | 'CASE_START' | 'CASE_SUBMITTED' | 'CHAT_IMPRESSION' | 'CHAT_LINK_CLICK' | 'CHAT_RESPONSE' | 'COLLAPSE' | 'CTA_CLICK' | 'DRIVING_DIRECTIONS' | 'EVENT' | 'EXPAND' | 'FEATURED_MESSAGE' | 'FILTERING_WITHIN_SECTION' | 'FORWARD_PAGINATE' | 'HEADER_LINKS' | 'ITEM_IN_LIST' | 'MAP_CARD' | 'MAP_PIN' | 'MENU' | 'MESSAGE' | 'ORDER' | 'PAGINATE' | 'POST' | 'PRESET_PROMPT' | 'PRODUCT' | 'PROFILE' | 'QUESTION_FOCUS' | 'QUESTION_SUBMIT' | 'REMOVED_FILTER' | 'REVIEW' | 'SCROLL_TO_BOTTOM_OF_PAGE' | 'SEARCH_BAR_IMPRESSION' | 'SEARCH_CLEAR_BUTTON' | 'TAP_TO_CALL' | 'THUMBS_DOWN' | 'THUMBS_UP' | 'TICKET_URL' | 'TITLE' | 'VERTICAL_TAB_NAVIGATION' | 'VERTICAL_VIEW_ALL' | 'VOICE_START' | 'VOICE_STOP' | 'WEBSITE';

// @public
export function analytics(config: AnalyticsConfig): AnalyticsEventService;
Expand Down Expand Up @@ -83,6 +83,10 @@ export interface EventPayload {
experienceKey: string;
};
sessionId?: string | null;
sites?: {
siteUid?: number;
template?: string;
};
timestamp?: Date | string;
visitor?: Record<string, string>;
}
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@yext/analytics",
"version": "1.0.0-beta.1",
"version": "1.0.0-beta.2",
"description": "An analytics library for Yext",
"author": "[email protected]",
"license": "BSD-3-Clause",
Expand Down
5 changes: 3 additions & 2 deletions playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ export default defineConfig({

/* Run your local dev server before starting the tests */
webServer: {
command: 'npm run build && npm run serve',
command: 'npm i && npm run build && npm run serve',
cwd: './test-site',
port: 3000,
reuseExistingServer: !process.env.CI
reuseExistingServer: !process.env.CI,
stdout: 'pipe'
}
});
6 changes: 3 additions & 3 deletions src/Action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ export type Action =
| 'BACKWARD_PAGINATE'
| 'BOOK'
| 'BRAND_ICON'
| 'CALL_TO_ACTION'
| 'CASE_START'
| 'CASE_SUBMITTED'
| 'CHAT_IMPRESSION'
| 'CHAT_LINK_CLICK'
| 'CHAT_RESPONSE'
| 'COLLAPSE'
| 'DIRECTIONS'
| 'CTA_CLICK'
| 'DRIVING_DIRECTIONS'
| 'EVENT'
| 'EXPAND'
| 'FEATURED_MESSAGE'
Expand All @@ -34,7 +34,6 @@ export type Action =
| 'MESSAGE'
| 'ORDER'
| 'PAGINATE'
| 'PHONE'
| 'POST'
| 'PRESET_PROMPT'
| 'PRODUCT'
Expand All @@ -46,6 +45,7 @@ export type Action =
| 'SCROLL_TO_BOTTOM_OF_PAGE'
| 'SEARCH_BAR_IMPRESSION'
| 'SEARCH_CLEAR_BUTTON'
| 'TAP_TO_CALL'
| 'THUMBS_DOWN'
| 'THUMBS_UP'
| 'TICKET_URL'
Expand Down
9 changes: 8 additions & 1 deletion src/EventPayload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export interface EventPayload {
/** The ID of the individual response in which the event occurred. */
responseId?: string;
};
/** Fields specific to reporting Search Analytics Events */
/** Fields specific to reporting Yext Search Analytics Events */
search?: {
/** Unique identifier of the search */
searchId?: string;
Expand All @@ -78,6 +78,13 @@ export interface EventPayload {
/** The identifier of the search experience. */
experienceKey: string;
};
/** Fields specific to reporting Yext Pages Analytics Events */
sites?: {
/* The UID of the site an event was tied to. */
siteUid?: number;
/* The ID of the template from which a site was generated. */
template?: string;
};
/**
* When the record summarizes multiple events, the number of events the record represents.
* The event is treated as if it is duplicated this many times.
Expand Down
42 changes: 36 additions & 6 deletions test-cdn/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
</head>
<body>
<p>Analytics Script Tag Integration Test Site</p>
<!-- <script src="https://storage.googleapis.com/assets-eu.sitescdn.net/chat/v0/chat.umd.js"></script> -->
<!-- <script src="https://assets.sitescdn.net/chat/v0/chat.umd.js"></script> -->
<script src="../dist/analytics.umd.js"></script>
<!-- LOCAL DEPLOYABLE <script src="../dist/analytics.umd.js"></script>-->
<!-- GCP SCRIPT TAG FOR EU <script src="https://storage.googleapis.com/assets-eu.sitescdn.net/analytics/v1.0.0-beta.2/analytics.umd.js"></script> -->
<!-- AWS SCRIPT TAG FOR US <script src="https://assets.sitescdn.net/analytics/v1.0.0-beta.2/analytics.umd.js"></script> -->
<script>
const analyticsProvider = window.AnalyticsSDK.analytics({
key: '%YEXT_API_KEY%',
sessionTrackingEnabled: false
key: '<INSERT YEXT API KEY HERE>',
sessionTrackingEnabled: false,
region: 'eu'
}).with({
action: 'CHAT_LINK_CLICK',
pageUrl: 'http://www.yext-test-pageurl.com',
Expand Down Expand Up @@ -104,15 +105,44 @@
}

function fireCallToActionEvent() {
analyticsProvider.report({ action: 'CALL_TO_ACTION' });
analyticsProvider.report({ action: 'CTA_CLICK' });
}

function fireEventWithSessionTracking() {
analyticsProvideWithSessionTracking.report();
}

function fireSearchEvent() {
analyticsProvider.report({
action: 'PRODUCT',
chat: null,
search: {
searchId: '11111111-1111-1111-1111-111111111111',
queryId: '11111111-1111-1111-1111-111111111111',
verticalKey: 'test-vertical-key',
isDirectAnswer: false,
versionLabel: 'PRODUCTION',
versionNumber: 1,
experienceKey: 'test-experience-key'
}
});
}

function firePagesEvent() {
analyticsProvider.report({
action: 'WEBSITE',
chat: null,
sites: {
siteUid: 123456789,
template: 'test-template'
}
});
}
</script>
<!-- This mirrors the test site -->
<button onclick="fireChatEvent()">Fire Chat Event</button>
<button onclick="fireSearchEvent()">Fire Search Event</button>
<button onclick="firePagesEvent()">Fire Pages Event</button>
<button onclick="fireCallToActionEvent()">Fire CTA event</button>
<button onclick="fireEventWithSessionTracking()">
Fire Event w/ Session Tracking
Expand Down
15 changes: 14 additions & 1 deletion test-e2e/playwright.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { test } from '@playwright/test';
import { expect, test } from '@playwright/test';

test.beforeAll(async () => {
expect(process.env.YEXT_API_KEY).toBeDefined();
});

test('test Fire Chat Event on Chromium, Firefox, and Webkit', async ({
page
Expand All @@ -18,6 +22,15 @@ test('test Fire Search Event on Chromium, Firefox, and Webkit', async ({
await responsePromise;
});

test('test Fire Pages Event on Chromium, Firefox, and Webkit', async ({
page
}) => {
const responsePromise = page.waitForResponse((res) => res.status() == 202);
await page.goto('/');
await page.click('button:has-text("Fire Pages Event")');
await responsePromise;
});

test('test Fire CTA Event on Chromium, Firefox, and Webkit', async ({
page
}) => {
Expand Down
2 changes: 1 addition & 1 deletion test-site/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions test-site/src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<body>
<button onclick="TestSite.fireChatEvent()">Fire Chat Event</button>
<button onclick="TestSite.fireSearchEvent()">Fire Search Event</button>
<button onclick="TestSite.firePagesEvent()">Fire Pages Event</button>
<button onclick="TestSite.fireCallToActionEvent()">Fire CTA event</button>
<button onclick="TestSite.fireEventWithSessionTracking()">
Fire Event w/ Session Tracking
Expand Down
13 changes: 12 additions & 1 deletion test-site/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,19 @@ export function fireSearchEvent() {
});
}

export function firePagesEvent() {
analyticsProvider.report({
action: 'WEBSITE',
chat: null,
sites: {
siteUid: 123456789,
template: 'test-template'
}
});
}

export function fireCallToActionEvent() {
analyticsProvider.report({ action: 'CALL_TO_ACTION' });
analyticsProvider.report({ action: 'CTA_CLICK' });
}

export function fireEventWithSessionTracking() {
Expand Down
Loading

0 comments on commit 6cebbf3

Please sign in to comment.