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 };