From 0901f49b9d5f8a28fa71d1d758d3277c52cd8384 Mon Sep 17 00:00:00 2001
From: Sai Kumar Battinoju
Date: Tue, 30 Apr 2024 22:42:19 +0530
Subject: [PATCH] chore: update sanity suite
---
.../__fixtures__/sourceConfig1.json | 656 ++++++++++--------
.../sourceConfigIgnoredProperties.js | 42 +-
.../src/testBook/ResultAssertions.js | 5 +-
.../sanity-suite/src/testBook/TestBook.js | 51 +-
packages/sanity-suite/src/testBook/string.js | 39 ++
5 files changed, 486 insertions(+), 307 deletions(-)
create mode 100644 packages/sanity-suite/src/testBook/string.js
diff --git a/packages/sanity-suite/__fixtures__/sourceConfig1.json b/packages/sanity-suite/__fixtures__/sourceConfig1.json
index 8c169162e0..3b59b6ac70 100644
--- a/packages/sanity-suite/__fixtures__/sourceConfig1.json
+++ b/packages/sanity-suite/__fixtures__/sourceConfig1.json
@@ -39,7 +39,7 @@
"updatedAt": "2024-02-22T03:31:39.813Z",
"config": {
"destConfig": {
- "web": ["useNativeSDK", "consentManagement"],
+ "web": ["useNativeSDK", "consentManagement", "connectionMode"],
"defaultConfig": [
"containerID",
"serverUrl",
@@ -125,8 +125,8 @@
"updatedAt": "2024-01-10T11:15:46.846Z",
"config": {
"destConfig": {
- "web": ["useNativeSDK", "dynamicRemarketing"],
"defaultConfig": [
+ "v2",
"conversionID",
"eventMappingFromConfig",
"pageLoadConversions",
@@ -148,11 +148,12 @@
"allowEnhancedConversions",
"oneTrustCookieCategories",
"enableConversionLabel"
- ]
+ ],
+ "web": ["useNativeSDK", "dynamicRemarketing", "connectionMode"]
},
- "secretKeys": [],
"excludeKeys": [],
"includeKeys": [
+ "v2",
"conversionID",
"eventMappingFromConfig",
"pageLoadConversions",
@@ -175,17 +176,18 @@
"allowEnhancedConversions",
"enableConversionLabel"
],
- "transformAtV1": "processor",
- "supportedSourceTypes": ["web"],
+ "saveDestinationResponse": false,
+ "secretKeys": [],
+ "supportedConnectionModes": {
+ "web": ["device"]
+ },
"supportedMessageTypes": {
"device": {
"web": ["identify", "track", "page"]
}
},
- "saveDestinationResponse": false,
- "supportedConnectionModes": {
- "web": ["device"]
- }
+ "supportedSourceTypes": ["web"],
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -222,16 +224,15 @@
"updatedAt": "2024-02-22T03:31:36.973Z",
"config": {
"destConfig": {
- "web": ["useNativeSDK", "connectionMode"],
"defaultConfig": [
"siteID",
"blacklistedEvents",
"whitelistedEvents",
"eventFilteringOption",
"oneTrustCookieCategories"
- ]
+ ],
+ "web": ["useNativeSDK", "connectionMode"]
},
- "secretKeys": [],
"excludeKeys": [],
"includeKeys": [
"siteID",
@@ -240,17 +241,18 @@
"oneTrustCookieCategories",
"eventFilteringOption"
],
- "transformAtV1": "processor",
- "supportedSourceTypes": ["web"],
+ "saveDestinationResponse": true,
+ "secretKeys": [],
+ "supportedConnectionModes": {
+ "web": ["device"]
+ },
"supportedMessageTypes": {
"device": {
"web": ["identify", "track", "page"]
}
},
- "saveDestinationResponse": true,
- "supportedConnectionModes": {
- "web": ["device"]
- }
+ "supportedSourceTypes": ["web"],
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -344,24 +346,7 @@
"updatedAt": "2024-02-07T10:11:05.489Z",
"config": {
"destConfig": {
- "ios": [
- "eventUploadPeriodMillis",
- "eventUploadThreshold",
- "useNativeSDK",
- "connectionMode",
- "trackSessionEvents",
- "useIdfaAsDeviceId"
- ],
- "web": [
- "useNativeSDK",
- "connectionMode",
- "preferAnonymousIdForDeviceId",
- "attribution",
- "eventUploadThreshold",
- "eventUploadPeriodMillis",
- "trackNewCampaigns",
- "proxyServerUrl"
- ],
+ "amp": ["connectionMode"],
"android": [
"eventUploadPeriodMillis",
"eventUploadThreshold",
@@ -371,26 +356,8 @@
"trackSessionEvents",
"useAdvertisingIdForDeviceId"
],
- "flutter": [
- "eventUploadPeriodMillis",
- "eventUploadThreshold",
- "useNativeSDK",
- "connectionMode",
- "enableLocationListening",
- "trackSessionEvents",
- "useAdvertisingIdForDeviceId",
- "useIdfaAsDeviceId"
- ],
- "reactnative": [
- "eventUploadPeriodMillis",
- "eventUploadThreshold",
- "useNativeSDK",
- "connectionMode",
- "enableLocationListening",
- "trackSessionEvents",
- "useAdvertisingIdForDeviceId",
- "useIdfaAsDeviceId"
- ],
+ "cloud": ["connectionMode"],
+ "cordova": ["connectionMode"],
"defaultConfig": [
"apiKey",
"groupTypeTrait",
@@ -415,10 +382,51 @@
"userProvidedPageEventString",
"useUserDefinedPageEventName",
"userProvidedScreenEventString",
- "useUserDefinedScreenEventName"
+ "useUserDefinedScreenEventName",
+ "enableEnhancedUserOperations"
+ ],
+ "flutter": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "connectionMode",
+ "enableLocationListening",
+ "trackSessionEvents",
+ "useAdvertisingIdForDeviceId",
+ "useIdfaAsDeviceId"
+ ],
+ "ios": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "connectionMode",
+ "trackSessionEvents",
+ "useIdfaAsDeviceId"
+ ],
+ "reactnative": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "connectionMode",
+ "enableLocationListening",
+ "trackSessionEvents",
+ "useAdvertisingIdForDeviceId",
+ "useIdfaAsDeviceId"
+ ],
+ "shopify": ["connectionMode"],
+ "unity": ["connectionMode"],
+ "warehouse": ["connectionMode"],
+ "web": [
+ "useNativeSDK",
+ "connectionMode",
+ "preferAnonymousIdForDeviceId",
+ "attribution",
+ "eventUploadThreshold",
+ "eventUploadPeriodMillis",
+ "trackNewCampaigns",
+ "proxyServerUrl"
]
},
- "secretKeys": ["apiKey", "apiSecret"],
"excludeKeys": [],
"includeKeys": [
"apiKey",
@@ -455,8 +463,32 @@
"useUserDefinedScreenEventName",
"proxyServerUrl"
],
- "transformAtV1": "processor",
"isAudienceSupported": false,
+ "saveDestinationResponse": true,
+ "secretKeys": ["apiKey", "apiSecret"],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud", "device"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud", "device"],
+ "ios": ["cloud", "device"],
+ "reactnative": ["cloud", "device"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["alias", "group", "identify", "page", "screen", "track"],
+ "device": {
+ "android": ["identify", "track", "screen"],
+ "flutter": ["identify", "track", "screen"],
+ "ios": ["identify", "track", "screen"],
+ "reactnative": ["identify", "track", "screen"],
+ "web": ["identify", "track", "page", "group"]
+ }
+ },
"supportedSourceTypes": [
"android",
"ios",
@@ -471,28 +503,7 @@
"shopify"
],
"supportsVisualMapper": true,
- "supportedMessageTypes": {
- "cloud": ["alias", "group", "identify", "page", "screen", "track"],
- "device": {
- "ios": ["identify", "track", "screen"],
- "web": ["identify", "track", "page", "group"],
- "android": ["identify", "track", "screen"],
- "flutter": ["identify", "track", "screen"],
- "reactnative": ["identify", "track", "screen"]
- }
- },
- "saveDestinationResponse": true,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud", "device"],
- "web": ["cloud", "device"],
- "unity": ["cloud"],
- "android": ["cloud", "device"],
- "cordova": ["cloud"],
- "flutter": ["cloud", "device"],
- "shopify": ["cloud"],
- "reactnative": ["cloud", "device"]
- }
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -548,17 +559,10 @@
"updatedAt": "2024-02-07T10:11:17.187Z",
"config": {
"destConfig": {
- "ios": ["useNativeSDK", "connectionMode"],
- "web": [
- "useNativeSDK",
- "enableBrazeLogging",
- "connectionMode",
- "enablePushNotification",
- "allowUserSuppliedJavascript"
- ],
+ "amp": ["connectionMode"],
"android": ["useNativeSDK", "connectionMode"],
- "flutter": ["useNativeSDK", "connectionMode"],
- "reactnative": ["useNativeSDK", "connectionMode"],
+ "cloud": ["connectionMode"],
+ "cordova": ["connectionMode"],
"defaultConfig": [
"appKey",
"dataCenter",
@@ -572,10 +576,27 @@
"whitelistedEvents",
"eventFilteringOption",
"oneTrustCookieCategories"
+ ],
+ "flutter": ["useNativeSDK", "connectionMode"],
+ "ios": ["useNativeSDK", "connectionMode"],
+ "reactnative": ["useNativeSDK", "connectionMode"],
+ "shopify": ["connectionMode"],
+ "unity": ["connectionMode"],
+ "warehouse": ["connectionMode"],
+ "web": [
+ "useNativeSDK",
+ "enableBrazeLogging",
+ "connectionMode",
+ "enablePushNotification",
+ "allowUserSuppliedJavascript"
]
},
- "secretKeys": ["restApiKey"],
"excludeKeys": [],
+ "hybridModeCloudEventsFilter": {
+ "web": {
+ "messageType": ["identify", "track", "page"]
+ }
+ },
"includeKeys": [
"appKey",
"dataCenter",
@@ -592,8 +613,32 @@
"enablePushNotification",
"allowUserSuppliedJavascript"
],
- "transformAtV1": "router",
"isAudienceSupported": true,
+ "saveDestinationResponse": true,
+ "secretKeys": ["restApiKey", "appKey"],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud", "device", "hybrid"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud", "device"],
+ "ios": ["cloud", "device", "hybrid"],
+ "reactnative": ["cloud", "device"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device", "hybrid"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["group", "identify", "page", "screen", "track", "alias"],
+ "device": {
+ "android": ["identify", "track"],
+ "flutter": ["identify", "track"],
+ "ios": ["identify", "track"],
+ "reactnative": ["identify", "track"],
+ "web": ["identify", "track", "page"]
+ }
+ },
"supportedSourceTypes": [
"android",
"ios",
@@ -608,33 +653,7 @@
"shopify"
],
"supportsVisualMapper": true,
- "supportedMessageTypes": {
- "cloud": ["group", "identify", "page", "screen", "track", "alias"],
- "device": {
- "ios": ["identify", "track"],
- "web": ["identify", "track", "page"],
- "android": ["identify", "track"],
- "flutter": ["identify", "track"],
- "reactnative": ["identify", "track"]
- }
- },
- "saveDestinationResponse": true,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud", "device", "hybrid"],
- "web": ["cloud", "device", "hybrid"],
- "unity": ["cloud"],
- "android": ["cloud", "device", "hybrid"],
- "cordova": ["cloud"],
- "flutter": ["cloud", "device"],
- "shopify": ["cloud"],
- "reactnative": ["cloud", "device"]
- },
- "hybridModeCloudEventsFilter": {
- "web": {
- "messageType": ["identify", "track", "page"]
- }
- }
+ "transformAtV1": "router"
},
"responseRules": null,
"category": null,
@@ -689,10 +708,10 @@
],
"oneTrustCookieCategories": [
{
- "oneTrustCookieCategory": "Analytical Cookies"
+ "oneTrustCookieCategory": "C0001"
},
{
- "oneTrustCookieCategory": "Functional Cookies"
+ "oneTrustCookieCategory": "C0003"
}
],
"eventFilteringOption": "blacklistedEvents",
@@ -718,26 +737,16 @@
"updatedAt": "2024-01-10T11:15:27.521Z",
"config": {
"auth": {
- "role": "google_analytics",
- "type": "OAuth",
"provider": "Google",
- "rudderScopes": ["delete"]
+ "role": "google_analytics",
+ "rudderScopes": ["delete"],
+ "type": "OAuth"
},
"destConfig": {
- "web": [
- "useNativeSDK",
- "trackCategorizedPages",
- "trackNamedPages",
- "useRichEventNames",
- "sampleRate",
- "siteSpeedSampleRate",
- "resetCustomDimensionsOnPage",
- "setAllMappedProps",
- "domain",
- "optimize",
- "useGoogleAmpClientId",
- "namedTracker"
- ],
+ "amp": ["consentManagement", "connectionMode"],
+ "android": ["consentManagement", "connectionMode"],
+ "cloud": ["consentManagement", "connectionMode"],
+ "cordova": ["consentManagement", "connectionMode"],
"defaultConfig": [
"trackingID",
"rudderDeleteAccountId",
@@ -761,9 +770,30 @@
"eventFilteringOption",
"oneTrustCookieCategories",
"ketchConsentPurposes"
+ ],
+ "flutter": ["consentManagement", "connectionMode"],
+ "ios": ["consentManagement", "connectionMode"],
+ "reactnative": ["consentManagement", "connectionMode"],
+ "shopify": ["consentManagement", "connectionMode"],
+ "unity": ["consentManagement", "connectionMode"],
+ "warehouse": ["consentManagement", "connectionMode"],
+ "web": [
+ "useNativeSDK",
+ "trackCategorizedPages",
+ "trackNamedPages",
+ "useRichEventNames",
+ "sampleRate",
+ "siteSpeedSampleRate",
+ "resetCustomDimensionsOnPage",
+ "setAllMappedProps",
+ "domain",
+ "optimize",
+ "useGoogleAmpClientId",
+ "namedTracker",
+ "consentManagement",
+ "connectionMode"
]
},
- "secretKeys": [],
"excludeKeys": [],
"includeKeys": [
"trackingID",
@@ -791,11 +821,32 @@
"blacklistedEvents",
"whitelistedEvents",
"oneTrustCookieCategories",
- "eventFilteringOption",
- "ketchConsentPurposes"
+ "ketchConsentPurposes",
+ "consentManagement",
+ "eventFilteringOption"
],
- "transformAtV1": "processor",
"isAudienceSupported": false,
+ "saveDestinationResponse": false,
+ "secretKeys": [],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud"],
+ "ios": ["cloud"],
+ "reactnative": ["cloud"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["identify", "page", "screen", "track"],
+ "device": {
+ "web": ["track", "page"]
+ }
+ },
"supportedSourceTypes": [
"android",
"ios",
@@ -810,24 +861,7 @@
"shopify"
],
"supportsVisualMapper": true,
- "supportedMessageTypes": {
- "cloud": ["identify", "page", "screen", "track"],
- "device": {
- "web": ["track", "page"]
- }
- },
- "saveDestinationResponse": false,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud"],
- "web": ["cloud", "device"],
- "unity": ["cloud"],
- "android": ["cloud"],
- "cordova": ["cloud"],
- "flutter": ["cloud"],
- "shopify": ["cloud"],
- "reactnative": ["cloud"]
- }
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -842,7 +876,7 @@
"workspaceId": "2L8FgwnU8Q4I4nQbdqmin8uP5n8",
"revisionId": "2YIk3OEzS8vCi5UWuy4P3HCmsWt",
"secretConfig": {},
- "secretVersion": 24,
+ "secretVersion": 26,
"shouldApplyDeviceModeTransformation": false,
"propagateEventsUntransformedOnError": false
},
@@ -894,24 +928,10 @@
"updatedAt": "2024-02-07T10:11:06.608Z",
"config": {
"destConfig": {
- "amp": ["consentManagement"],
- "ios": ["useNativeSDK", "connectionMode", "consentManagement"],
- "web": [
- "debugView",
- "useNativeSDK",
- "connectionMode",
- "capturePageView",
- "useNativeSDKToSend",
- "extendPageViewParams",
- "overrideClientAndSessionId",
- "consentManagement"
- ],
- "unity": ["consentManagement"],
+ "amp": ["consentManagement", "connectionMode"],
"android": ["useNativeSDK", "connectionMode", "consentManagement"],
- "cordova": ["consentManagement"],
- "flutter": ["consentManagement"],
- "shopify": ["consentManagement"],
- "reactnative": ["consentManagement"],
+ "cloud": ["consentManagement", "connectionMode"],
+ "cordova": ["consentManagement", "connectionMode"],
"defaultConfig": [
"apiSecret",
"debugMode",
@@ -924,10 +944,30 @@
"piiPropertiesToIgnore",
"oneTrustCookieCategories",
"ketchConsentPurposes"
+ ],
+ "flutter": ["consentManagement", "connectionMode"],
+ "ios": ["useNativeSDK", "connectionMode", "consentManagement"],
+ "reactnative": ["consentManagement", "connectionMode"],
+ "shopify": ["consentManagement", "connectionMode"],
+ "unity": ["consentManagement", "connectionMode"],
+ "warehouse": ["consentManagement", "connectionMode"],
+ "web": [
+ "debugView",
+ "useNativeSDK",
+ "connectionMode",
+ "capturePageView",
+ "useNativeSDKToSend",
+ "extendPageViewParams",
+ "overrideClientAndSessionId",
+ "consentManagement"
]
},
- "secretKeys": ["apiSecret"],
"excludeKeys": [],
+ "hybridModeCloudEventsFilter": {
+ "web": {
+ "messageType": ["track", "group"]
+ }
+ },
"includeKeys": [
"debugView",
"measurementId",
@@ -944,7 +984,29 @@
"ketchConsentPurposes",
"consentManagement"
],
- "transformAtV1": "processor",
+ "saveDestinationResponse": false,
+ "secretKeys": ["apiSecret"],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud", "device"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud"],
+ "ios": ["cloud", "device"],
+ "reactnative": ["cloud"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device", "hybrid"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["track", "group", "page"],
+ "device": {
+ "android": ["identify", "track", "screen"],
+ "ios": ["identify", "track", "screen"],
+ "web": ["identify", "track", "page", "group"]
+ }
+ },
"supportedSourceTypes": [
"android",
"ios",
@@ -958,31 +1020,7 @@
"warehouse",
"shopify"
],
- "supportedMessageTypes": {
- "cloud": ["track", "group", "page"],
- "device": {
- "ios": ["identify", "track", "screen"],
- "web": ["identify", "track", "page", "group"],
- "android": ["identify", "track", "screen"]
- }
- },
- "saveDestinationResponse": false,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud", "device"],
- "web": ["cloud", "device", "hybrid"],
- "unity": ["cloud"],
- "android": ["cloud", "device"],
- "cordova": ["cloud"],
- "flutter": ["cloud"],
- "shopify": ["cloud"],
- "reactnative": ["cloud"]
- },
- "hybridModeCloudEventsFilter": {
- "web": {
- "messageType": ["track", "group"]
- }
- }
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -996,7 +1034,7 @@
"workspaceId": "2L8FgwnU8Q4I4nQbdqmin8uP5n8",
"revisionId": "2XnaWugKhdZhMaaq5ZQwCSB0B18",
"secretConfig": {},
- "secretVersion": 12,
+ "secretVersion": 14,
"shouldApplyDeviceModeTransformation": false,
"propagateEventsUntransformedOnError": false
},
@@ -1022,10 +1060,12 @@
"createdAt": "2020-04-09T09:26:55.187Z",
"updatedAt": "2024-02-07T10:11:21.816Z",
"config": {
+ "cdkV2Enabled": true,
"destConfig": {
- "ios": ["useNativeSDK", "connectionMode"],
- "web": ["useNativeSDK", "connectionMode", "fs_debug_mode", "fs_host"],
+ "amp": ["connectionMode"],
"android": ["useNativeSDK", "connectionMode"],
+ "cloud": ["connectionMode"],
+ "cordova": ["connectionMode"],
"defaultConfig": [
"apiKey",
"fs_org",
@@ -1033,9 +1073,15 @@
"whitelistedEvents",
"oneTrustCookieCategories",
"eventFilteringOption"
- ]
+ ],
+ "flutter": ["connectionMode"],
+ "ios": ["useNativeSDK", "connectionMode"],
+ "reactnative": ["connectionMode"],
+ "shopify": ["connectionMode"],
+ "unity": ["connectionMode"],
+ "warehouse": ["connectionMode"],
+ "web": ["useNativeSDK", "connectionMode", "fs_debug_mode", "fs_host"]
},
- "secretKeys": ["apiKey"],
"excludeKeys": [],
"includeKeys": [
"fs_debug_mode",
@@ -1046,8 +1092,29 @@
"oneTrustCookieCategories",
"eventFilteringOption"
],
- "cdkV2Enabled": true,
- "transformAtV1": "processor",
+ "saveDestinationResponse": true,
+ "secretKeys": ["apiKey"],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud", "device"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud"],
+ "ios": ["cloud", "device"],
+ "reactnative": ["cloud"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["track", "identify"],
+ "device": {
+ "android": ["identify", "track", "screen"],
+ "ios": ["identify", "track", "screen"],
+ "web": ["identify", "track", "page"]
+ }
+ },
"supportedSourceTypes": [
"web",
"android",
@@ -1061,26 +1128,7 @@
"cordova",
"shopify"
],
- "supportedMessageTypes": {
- "cloud": ["track", "identify"],
- "device": {
- "ios": ["identify", "track", "screen"],
- "web": ["identify", "track", "page"],
- "android": ["identify", "track", "screen"]
- }
- },
- "saveDestinationResponse": true,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud", "device"],
- "web": ["cloud", "device"],
- "unity": ["cloud"],
- "android": ["cloud", "device"],
- "cordova": ["cloud"],
- "flutter": ["cloud"],
- "shopify": ["cloud"],
- "reactnative": ["cloud"]
- }
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -1126,15 +1174,10 @@
"updatedAt": "2024-01-10T11:15:40.522Z",
"config": {
"destConfig": {
- "web": [
- "useNativeSDK",
- "autocapture",
- "capturePageView",
- "disableSessionRecording",
- "propertyBlackList",
- "xhrHeaders",
- "enableLocalStoragePersistence"
- ],
+ "amp": ["connectionMode", "consentManagement"],
+ "android": ["connectionMode", "consentManagement"],
+ "cloud": ["connectionMode", "consentManagement"],
+ "cordova": ["connectionMode", "consentManagement"],
"defaultConfig": [
"teamApiKey",
"yourInstance",
@@ -1143,9 +1186,25 @@
"eventFilteringOption",
"useV2Group",
"oneTrustCookieCategories"
+ ],
+ "flutter": ["connectionMode", "consentManagement"],
+ "ios": ["connectionMode", "consentManagement"],
+ "reactnative": ["connectionMode", "consentManagement"],
+ "shopify": ["connectionMode", "consentManagement"],
+ "unity": ["connectionMode", "consentManagement"],
+ "warehouse": ["connectionMode", "consentManagement"],
+ "web": [
+ "useNativeSDK",
+ "autocapture",
+ "capturePageView",
+ "disableSessionRecording",
+ "propertyBlackList",
+ "xhrHeaders",
+ "enableLocalStoragePersistence",
+ "consentManagement",
+ "connectionMode"
]
},
- "secretKeys": [],
"excludeKeys": [],
"includeKeys": [
"teamApiKey",
@@ -1160,9 +1219,30 @@
"oneTrustCookieCategories",
"enableLocalStoragePersistence",
"eventFilteringOption",
- "useV2Group"
+ "useV2Group",
+ "consentManagement"
],
- "transformAtV1": "processor",
+ "saveDestinationResponse": true,
+ "secretKeys": ["teamApiKey"],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud"],
+ "ios": ["cloud"],
+ "reactnative": ["cloud"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["alias", "group", "identify", "page", "screen", "track"],
+ "device": {
+ "web": ["identify", "track", "page", "group"]
+ }
+ },
"supportedSourceTypes": [
"android",
"ios",
@@ -1176,24 +1256,7 @@
"cordova",
"shopify"
],
- "supportedMessageTypes": {
- "cloud": ["alias", "group", "identify", "page", "screen", "track"],
- "device": {
- "web": ["identify", "track", "page", "group"]
- }
- },
- "saveDestinationResponse": true,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud"],
- "web": ["cloud", "device"],
- "unity": ["cloud"],
- "android": ["cloud"],
- "cordova": ["cloud"],
- "flutter": ["cloud"],
- "shopify": ["cloud"],
- "reactnative": ["cloud"]
- }
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
@@ -1251,10 +1314,12 @@
"updatedAt": "2024-01-10T11:15:33.215Z",
"config": {
"destConfig": {
- "web": ["useNativeSDK", "legacyConversionPixelId", "connectionMode"],
+ "amp": ["consentManagement", "connectionMode"],
+ "android": ["consentManagement", "connectionMode"],
+ "cloud": ["consentManagement", "connectionMode"],
+ "cordova": ["consentManagement", "connectionMode"],
"defaultConfig": [
"blacklistPiiProperties",
- "categoryToContent",
"pixelId",
"eventsToEvents",
"valueFieldIdentifier",
@@ -1272,9 +1337,20 @@
"useUpdatedMapping",
"oneTrustCookieCategories",
"ketchConsentPurposes"
+ ],
+ "flutter": ["consentManagement", "connectionMode"],
+ "ios": ["consentManagement", "connectionMode"],
+ "reactnative": ["consentManagement", "connectionMode"],
+ "shopify": ["consentManagement", "connectionMode"],
+ "unity": ["consentManagement", "connectionMode"],
+ "warehouse": ["consentManagement", "connectionMode"],
+ "web": [
+ "useNativeSDK",
+ "legacyConversionPixelId",
+ "connectionMode",
+ "consentManagement"
]
},
- "secretKeys": [],
"excludeKeys": [],
"includeKeys": [
"blacklistPiiProperties",
@@ -1288,11 +1364,32 @@
"blacklistedEvents",
"whitelistedEvents",
"oneTrustCookieCategories",
+ "ketchConsentPurposes",
+ "consentManagement",
"eventFilteringOption",
- "useUpdatedMapping",
- "ketchConsentPurposes"
+ "useUpdatedMapping"
],
- "transformAtV1": "processor",
+ "saveDestinationResponse": true,
+ "secretKeys": ["accessToken"],
+ "supportedConnectionModes": {
+ "amp": ["cloud"],
+ "android": ["cloud"],
+ "cloud": ["cloud"],
+ "cordova": ["cloud"],
+ "flutter": ["cloud"],
+ "ios": ["cloud"],
+ "reactnative": ["cloud"],
+ "shopify": ["cloud"],
+ "unity": ["cloud"],
+ "warehouse": ["cloud"],
+ "web": ["cloud", "device"]
+ },
+ "supportedMessageTypes": {
+ "cloud": ["identify", "page", "screen", "track"],
+ "device": {
+ "web": ["track", "page"]
+ }
+ },
"supportedSourceTypes": [
"android",
"ios",
@@ -1306,24 +1403,7 @@
"cordova",
"shopify"
],
- "supportedMessageTypes": {
- "cloud": ["identify", "page", "screen", "track"],
- "device": {
- "web": ["track", "page"]
- }
- },
- "saveDestinationResponse": true,
- "supportedConnectionModes": {
- "amp": ["cloud"],
- "ios": ["cloud"],
- "web": ["cloud", "device"],
- "unity": ["cloud"],
- "android": ["cloud"],
- "cordova": ["cloud"],
- "flutter": ["cloud"],
- "shopify": ["cloud"],
- "reactnative": ["cloud"]
- }
+ "transformAtV1": "processor"
},
"responseRules": null,
"category": null,
diff --git a/packages/sanity-suite/src/ignoredProperties/sourceConfigIgnoredProperties.js b/packages/sanity-suite/src/ignoredProperties/sourceConfigIgnoredProperties.js
index 80efe0b098..86170f2c62 100644
--- a/packages/sanity-suite/src/ignoredProperties/sourceConfigIgnoredProperties.js
+++ b/packages/sanity-suite/src/ignoredProperties/sourceConfigIgnoredProperties.js
@@ -15,6 +15,10 @@ const sourceConfigIgnoredProperties = [
key: `source.sourceDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.0.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.0.updatedAt`,
type: 'string',
@@ -27,6 +31,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.0.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.1.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.1.updatedAt`,
type: 'string',
@@ -39,6 +47,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.1.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.2.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.2.updatedAt`,
type: 'string',
@@ -51,6 +63,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.2.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.3.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.3.updatedAt`,
type: 'string',
@@ -64,7 +80,11 @@ const sourceConfigIgnoredProperties = [
type: 'string',
},
{
- key: `source.destinations.3.updatedAt`,
+ key: `source.destinations.4.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
+ {
+ key: `source.destinations.4.updatedAt`,
type: 'string',
},
{
@@ -75,6 +95,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.4.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.5.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.5.updatedAt`,
type: 'string',
@@ -87,6 +111,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.5.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.6.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.6.updatedAt`,
type: 'string',
@@ -99,6 +127,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.6.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.7.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.7.updatedAt`,
type: 'string',
@@ -111,6 +143,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.7.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.8.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.8.updatedAt`,
type: 'string',
@@ -123,6 +159,10 @@ const sourceConfigIgnoredProperties = [
key: `source.destinations.8.destinationDefinition.updatedAt`,
type: 'string',
},
+ {
+ key: `source.destinations.9.liveEventsConfig.eventDeliveryTS`,
+ type: 'number',
+ },
{
key: `source.destinations.9.updatedAt`,
type: 'string',
diff --git a/packages/sanity-suite/src/testBook/ResultAssertions.js b/packages/sanity-suite/src/testBook/ResultAssertions.js
index daf2378bb1..86bec1e864 100644
--- a/packages/sanity-suite/src/testBook/ResultAssertions.js
+++ b/packages/sanity-suite/src/testBook/ResultAssertions.js
@@ -46,7 +46,10 @@ const ResultsAssertions = {
);
}
- return JSON.stringify(resultData, undefined, 2);
+ return {
+ resultData: JSON.stringify(resultData, undefined, 2),
+ expectedResultData: JSON.stringify(expectedResultData, undefined, 2),
+ };
} catch (e) {
console.error(e);
return JSON.stringify({}, undefined, 2);
diff --git a/packages/sanity-suite/src/testBook/TestBook.js b/packages/sanity-suite/src/testBook/TestBook.js
index a51b47c3fd..69f018b7a2 100644
--- a/packages/sanity-suite/src/testBook/TestBook.js
+++ b/packages/sanity-suite/src/testBook/TestBook.js
@@ -1,4 +1,5 @@
import { ResultsAssertions } from './ResultAssertions';
+import { toBase64 } from './string';
class TestBook {
constructor(testBookData, executionDelay = 5000, containerId = 'testBook') {
@@ -91,30 +92,32 @@ class TestBook {
)
}
-
${JSON.stringify(testCase.inputData, undefined, 2)}
+
${JSON.stringify(testCase.inputData, undefined, 2)}
- pending |
+ }">pending
+
+
View result diff
+
+
-
+ }" style="white-space: pre-wrap;">${JSON.stringify(testCase.expectedResult, undefined, 2)}
|
-
- ${JSON.stringify(testCase.expectedResult, undefined, 2)}
-
+ }" data-test-case-id="${testCase.id}" style="white-space: pre-wrap;">
@@ -294,14 +297,17 @@ class TestBook {
const observer = new MutationObserver(mutationList => {
const resultDataElement = mutationList[0].addedNodes[0].parentNode;
const resultData = resultDataElement.textContent.trim();
- const expectedResult = resultRowElement.lastElementChild.childNodes[1].textContent.trim();
- const sanitizedResultData = ResultsAssertions.sanitizeResultData(
- resultData,
- expectedResult,
- );
+ // Get the last but one child from resultRowElement
+ const expectedResult =
+ resultRowElement.childNodes[
+ resultRowElement.childNodes.length - 2
+ ].childNodes[1].textContent.trim();
+
+ const { resultData: sanitizedResultData, expectedResultData: sanitizedExpectedResultData } =
+ ResultsAssertions.sanitizeResultData(resultData, expectedResult);
const assertionResult = ResultsAssertions.assertDeepObjectDiffResult(
sanitizedResultData,
- expectedResult,
+ sanitizedExpectedResultData,
);
const statusElement = document.getElementById(`test-case-status-${testCaseId}`);
@@ -311,6 +317,17 @@ class TestBook {
behavior: 'smooth',
block: 'center',
});
+
+ const viewDiffElement = document.getElementById(`view-diff-${testCaseId}`);
+ if (assertionResult === 'success') {
+ // hide the element
+ viewDiffElement.classList.add('d-none');
+ } else {
+ // show the element
+ viewDiffElement.classList.remove('d-none');
+
+ viewDiffElement.href = `https://jsondiff.com/#left=data:base64,${toBase64(sanitizedExpectedResultData)}&right=data:base64,${toBase64(sanitizedResultData)}`;
+ }
});
observer.observe(resultContainerElement, {
diff --git a/packages/sanity-suite/src/testBook/string.js b/packages/sanity-suite/src/testBook/string.js
new file mode 100644
index 0000000000..07b94fa7b3
--- /dev/null
+++ b/packages/sanity-suite/src/testBook/string.js
@@ -0,0 +1,39 @@
+// The following text encoding and decoding is done before base64 encoding to prevent
+// https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem
+
+/**
+ * Converts a base64 encoded string to bytes array
+ * @param base64Str base64 encoded string
+ * @returns bytes array
+ */
+const base64ToBytes = base64Str => {
+ const binString = globalThis.atob(base64Str);
+ const bytes = binString.split('').map(char => char.charCodeAt(0));
+ return new Uint8Array(bytes);
+};
+
+/**
+ * Converts a bytes array to base64 encoded string
+ * @param bytes bytes array to be converted to base64
+ * @returns base64 encoded string
+ */
+const bytesToBase64 = bytes => {
+ const binString = Array.from(bytes, x => String.fromCodePoint(x)).join('');
+ return globalThis.btoa(binString);
+};
+
+/**
+ * Encodes a string to base64 even with unicode characters
+ * @param value input string
+ * @returns base64 encoded string
+ */
+const toBase64 = value => bytesToBase64(new TextEncoder().encode(value));
+
+/**
+ * Decodes a base64 encoded string
+ * @param value base64 encoded string
+ * @returns decoded string
+ */
+const fromBase64 = value => new TextDecoder().decode(base64ToBytes(value));
+
+export { toBase64, fromBase64 };
|