Repository: GoogleChromeLabs/ps-analysis-tool
Pull request #795 (2024-08-01 06:58:52)

Fix: QA issues on v0.10
## Description
This PR aims to fix the issues in the develop branch.
It fixes the following issues:
- [x] [UI : Extension Reports : The Downloaded Reports display in Light mode when your system and browser preference is dark mode.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2258372075)
- [x] [Extension : We need a proper message to the Blocked cookie section when there are not blocked cookies (ie. count is zero)](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2258106844)
- [x] [Extension: On the cookie landing page, the messages in the "Known Breakages" and "Exempted Cookies" sections are not center-aligned.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260262251)
- [x] [An unwanted ` symbol is visible after the migration text in the GSI description within the "Known Breakages" section.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260272297)
- [x] [Extension: In the platform column, if there are entries labeled "Unknown," the sorting functionality does not work correctly. The "Unknown" values are displayed at the top of the list.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260311061)
- [x] [Extension: The frames section does not work when global filters are applied in the report.
](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260350081)
- [x] [Extension: In the Exemption Cookie section, the color does not update when selecting an exemption cookie from the filter. The color should change to reflect the selected cookie.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260412421)
- [x] [CLI: The HttpOnly filter is not functioning correctly on some sites.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260562185)
- [x] [The "SameSite" column is inconsistently displaying "none" and "None" for empty rows where the SameSite value is absent. It should be consistant to use either "none" or "None" consistently across all entries.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2264468651)
- [ ] [CLI : Invalid CSV getting generated when there is JSON value added for cookies.](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2260386155)
- [x] [In the Korean translations, some values for the SameSite column appear translated in the table, but after downloading the CSV file, those translations are not visible in the CSV. ](https://github.com/GoogleChromeLabs/ps-analysis-tool/issues/768#issuecomment-2264678905)
## Relevant Technical Choices

<!-- Please describe your changes. -->

## Testing Instructions

<!--
How can the changes in this PR be verified?
Please provide step-by-step instructions to test the changes.
-->

## Additional Information:

<!-- Any other information. -->

## Screenshot/Screencast

<!-- Please provide Screenshot/Screencast, if applicable -->

---

## Checklist

<!-- Check these after PR creation -->

- [x] I have thoroughly tested this code to the best of my abilities.
- [x] I have reviewed the code myself before requesting a review.
- [x] This code is covered by unit tests to verify that it works as intended.
- [ ] The QA of this PR is done by a member of the QA team (to be checked by QA).

<!--
Example:

Fixes #123
Partially addresses #22
See #834
-->

Partially addresses #768 



Patch:
diff --git a/docs/development-workflows.md b/docs/development-workflows.md
index 6e78761d..95ff168e 100644
--- a/docs/development-workflows.md
+++ b/docs/development-workflows.md
@@ -41,7 +41,7 @@ npm run dev:cli
 
 After making changes in the `cli`, `cli-dashboard`, or any CLI-related packages, use:
 ```bash
-npm run build:cli
+npm run build:cli:dashboard
 ```
 
 ## Build Workflows
diff --git a/packages/analysis-utils/src/browserManagement/index.ts b/packages/analysis-utils/src/browserManagement/index.ts
index e0b12366..e24d30aa 100644
--- a/packages/analysis-utils/src/browserManagement/index.ts
+++ b/packages/analysis-utils/src/browserManagement/index.ts
@@ -334,7 +334,7 @@ export class BrowserManagement {
             domain: parsedCookie.domain,
             path: parsedCookie.path || '/',
             value: parsedCookie.value,
-            samesite: parsedCookie.samesite || 'Lax',
+            samesite: parsedCookie.samesite?.toLowerCase() || 'lax',
             expires: parsedCookie.expires || 'Session',
             httponly: parsedCookie.httponly || false,
             secure: parsedCookie.secure || false,
@@ -407,9 +407,9 @@ export class BrowserManagement {
           domain: associatedCookie.cookie.domain,
           path: associatedCookie.cookie.path || '/',
           value: associatedCookie.cookie.value,
-          sameSite: associatedCookie.cookie.sameSite || 'Lax',
+          samesite: associatedCookie.cookie.sameSite?.toLowerCase() || 'lax',
           expires: associatedCookie.cookie.expires || 'Session',
-          httpOnly: associatedCookie.cookie.httpOnly || false,
+          httponly: associatedCookie.cookie.httpOnly || false,
           secure: associatedCookie.cookie.secure || false,
           partitionKey: '',
         },
@@ -562,7 +562,12 @@ export class BrowserManagement {
             }
             const key = cookie.name + ':' + cookie.domain + ':' + cookie.path;
             frameCookies[key] = {
-              parsedCookie: { ...cookie, partitionKey: '' },
+              parsedCookie: {
+                ...cookie,
+                partitionKey: '',
+                httponly: false,
+                samesite: cookie.sameSite?.toLowerCase() || 'lax',
+              },
             };
           });
 
diff --git a/packages/analysis-utils/src/types.ts b/packages/analysis-utils/src/types.ts
index be4d567e..1ab5025a 100644
--- a/packages/analysis-utils/src/types.ts
+++ b/packages/analysis-utils/src/types.ts
@@ -56,7 +56,7 @@ export interface CookieLogDetails
   category: string;
   description: string;
   isFirstParty: 'Yes' | 'No';
-  sameSite: string;
+  samesite: string;
   partitionKey?: Protocol.Network.CookiePartitionKey;
   pageUrl: string;
   requestUrls: { [key: string]: string };
diff --git a/packages/cli-dashboard/src/app.tsx b/packages/cli-dashboard/src/app.tsx
index 99148307..c0cb12fd 100644
--- a/packages/cli-dashboard/src/app.tsx
+++ b/packages/cli-dashboard/src/app.tsx
@@ -60,6 +60,10 @@ const App = () => {
       return;
     }
 
+    if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
+      bodyTag.classList.add('dark');
+    }
+
     bodyTag.style.fontSize = '75%';
   }, []);
 
@@ -130,7 +134,7 @@ const App = () => {
   }
 
   return (
-    <div className="w-full h-screen flex">
+    <div className="w-full h-screen flex dark:bg-raisin-black text-raisin-black dark:text-bright-gray">
       <SiteReport
         completeJson={completeJsonReport}
         cookies={cookies}
diff --git a/packages/cli-dashboard/src/dummyData/PSAT_DATA.js b/packages/cli-dashboard/src/dummyData/PSAT_DATA.js
index abaa281e..9d3c6e16 100644
--- a/packages/cli-dashboard/src/dummyData/PSAT_DATA.js
+++ b/packages/cli-dashboard/src/dummyData/PSAT_DATA.js
@@ -22,6 +22,151 @@ export default {
       cookieData: {
         'https://open.spotify.com': {
           frameCookies: {
+            '_cc_cccrwdcntrl.net/': {
+              parsedCookie: {
+                domain: '.crwdcntrl.net',
+                name: '_cc_cc',
+                path: '/',
+                samesite: 'none',
+                httponly: false,
+                priority: 'Medium',
+                value:
+                  '"ACZ4nGNQMDewNDA1N080NjA0SzVINbQwSzExMbcwNLMwNDQzNjBnAIK0Wb7zGRAAACRYCVA%3D"',
+                partitionKey: '',
+                expires: '2025-04-15T11:27:27.639Z',
+                httpOnly: false,
+                sameParty: false,
+                sameSite: 'None',
+                secure: true,
+                session: false,
+                size: 82,
+                sourcePort: 443,
+                sourceScheme: 'Secure',
+              },
+              warningReasons: [],
+              blockedReasons: ['ThirdPartyPhaseout'],
+              networkEvents: {
+                requestEvents: [],
+                responseEvents: [],
+              },
+              headerType: 'http',
+              isFirstParty: false,
+              url: '',
+              frameIdList: ['6C93EFD2145CB7798F6C74BC08576FAE'],
+              analytics: {
+                platform: 'Lotame',
+                category: 'Marketing',
+                name: '_cc_cc',
+                domain: 'crwdcntrl.net',
+                description: 'OCD__cc_cc_description',
+                retention: 'OCD_retention_session',
+                dataController: 'Lotame',
+                gdprUrl:
+                  'https://www.lotame.com/about-lotame/privacy/lotames-products-services-privacy-policy/',
+                wildcard: '0',
+              },
+              blockingStatus: {
+                inboundBlock: 'NOT_BLOCKED',
+                outboundBlock: 'BLOCKED_IN_ALL_EVENTS',
+              },
+              isBlocked: true,
+            },
+            '_cc_audcrwdcntrl.net/': {
+              parsedCookie: {
+                domain: '.crwdcntrl.net',
+                name: '_cc_aud',
+                path: '/',
+                samesite: 'none',
+                httponly: false,
+                priority: 'Medium',
+                value: '"ABR4nGNgYGBIm%2BU7nwEOABfpAe0%3D"',
+                partitionKey: '',
+                expires: '2025-04-15T11:27:27.639Z',
+                httpOnly: false,
+                sameParty: false,
+                sameSite: 'None',
+                secure: true,
+                session: false,
+                size: 41,
+                sourcePort: 443,
+                sourceScheme: 'Secure',
+              },
+              warningReasons: [],
+              blockedReasons: ['ThirdPartyPhaseout'],
+              networkEvents: {
+                requestEvents: [],
+                responseEvents: [],
+              },
+              headerType: 'http',
+              isFirstParty: false,
+              url: '',
+              frameIdList: ['6C93EFD2145CB7798F6C74BC08576FAE'],
+              analytics: {
+                platform: 'Lotame',
+                category: 'Marketing',
+                name: '_cc_aud',
+                domain: 'crwdcntrl.net',
+                description: 'OCD__cc_aud_description',
+                retention: 'OCD_retention_269_days',
+                dataController: 'Lotame',
+                gdprUrl:
+                  'https://www.lotame.com/about-lotame/privacy/lotames-products-services-privacy-policy/',
+                wildcard: '0',
+              },
+              blockingStatus: {
+                inboundBlock: 'NOT_BLOCKED',
+                outboundBlock: 'BLOCKED_IN_ALL_EVENTS',
+              },
+              isBlocked: true,
+            },
+            'plsGeoObjspectator.org/': {
+              isBlocked: false,
+              parsedCookie: {
+                domain: 'spectator.org',
+                expires: '2024-08-03T07:24:10.000Z',
+                httpOnly: false,
+                name: 'plsGeoObj',
+                path: '/',
+                priority: 'Medium',
+                sameParty: false,
+                sameSite: 'Lax',
+                secure: false,
+                session: false,
+                size: 117,
+                sourcePort: 443,
+                sourceScheme: 'Secure',
+                value:
+                  '{"ip":"59.88.27.175","country":"IN","region":"MH","city":"Pune","zip":"411004","location":"18.6161,73.7286"}',
+                httponly: false,
+                samesite: 'lax',
+                partitionKey: '',
+              },
+              networkEvents: {
+                requestEvents: [],
+                responseEvents: [],
+              },
+              blockedReasons: [],
+              analytics: {
+                platform: 'Unknown',
+                category: 'Uncategorized',
+                name: '',
+                domain: '',
+                description: '',
+                retention: '',
+                dataController: '',
+                gdprUrl: '',
+                wildcard: '',
+              },
+              url: '',
+              headerType: 'http',
+              isFirstParty: true,
+              frameIdList: ['6C93EFD2145CB7798F6C74BC08576FAE'],
+              blockingStatus: {
+                inboundBlock: 'NOT_BLOCKED',
+                outboundBlock: 'NOT_BLOCKED',
+              },
+              warningReasons: [],
+            },
             'sp_t:.spotify.com:/': {
               parsedCookie: {
                 name: 'sp_t',
diff --git a/packages/common/src/cookies.types.ts b/packages/common/src/cookies.types.ts
index a3c9de1a..be414ac0 100644
--- a/packages/common/src/cookies.types.ts
+++ b/packages/common/src/cookies.types.ts
@@ -203,9 +203,9 @@ export type CookieJsonDataType = {
     partitionKey: string;
     path: string;
     expires: string;
-    httpOnly: boolean;
+    httponly: boolean;
     secure: boolean;
-    sameSite: string;
+    samesite: string;
     priority?: 'Low' | 'Medium' | 'High';
     size?: number;
   };
diff --git a/packages/common/src/utils/findAnalyticsMatch.ts b/packages/common/src/utils/findAnalyticsMatch.ts
index 0f8cbc22..77a6ab04 100644
--- a/packages/common/src/utils/findAnalyticsMatch.ts
+++ b/packages/common/src/utils/findAnalyticsMatch.ts
@@ -34,7 +34,7 @@ const wildTest = (wildcard: string, str: string): boolean => {
 };
 
 export const emptyAnalytics = {
-  platform: '',
+  platform: 'Unknown',
   category: 'Uncategorized',
   name: '',
   domain: '',
diff --git a/packages/common/src/utils/generateReports/generateAllCookiesCSV.ts b/packages/common/src/utils/generateReports/generateAllCookiesCSV.ts
index 117d3b38..718406a1 100644
--- a/packages/common/src/utils/generateReports/generateAllCookiesCSV.ts
+++ b/packages/common/src/utils/generateReports/generateAllCookiesCSV.ts
@@ -17,16 +17,17 @@
 /**
  * External dependencies
  */
-import sanitizeCsvRecord from '../sanitizeCsvRecord';
 import { I18n } from '@google-psat/i18n';
 /**
  * Internal dependencies
  */
 import {
+  CookieTableData,
   type CompleteJson,
   type CookieJsonDataType,
 } from '../../cookies.types';
-import calculateEffectiveExpiryDate from '../calculateEffectiveExpiryDate';
+import generateExtensionCookieTableCSV from './generateExtensionCookietableCSV';
+import generateCLICookieTableCSV from './generateCLICookieTableCSV';
 
 export const COOKIES_DATA_HEADER = [
   () => I18n.getMessage('name'),
@@ -59,61 +60,19 @@ const generateAllCookiesCSV = (siteAnalysisData: CompleteJson): string => {
     });
   });
 
-  if (isExtension) {
-    COOKIES_DATA_HEADER.push(
-      () => I18n.getMessage('priority'),
-      () => I18n.getMessage('size')
-    );
-  }
-
-  let cookieRecords = '';
+  const cookieRecords: CookieTableData[] = [];
 
   for (const cookie of cookieMap.values()) {
-    //This should be in the same order as cookieDataHeader
-    const expires = calculateEffectiveExpiryDate(cookie.parsedCookie.expires);
-
-    const recordsArray = [
-      cookie.parsedCookie.name,
-      cookie.isFirstParty
-        ? I18n.getMessage('firstParty')
-        : I18n.getMessage('thirdParty'),
-      cookie.parsedCookie.domain || ' ',
-      cookie.parsedCookie.partitionKey || ' ',
-      cookie.parsedCookie.sameSite,
-      I18n.getMessage(
-        cookie.analytics?.category?.toLowerCase() || 'uncategorized'
-      ),
-      cookie.analytics.platform,
-      cookie.parsedCookie.httpOnly
-        ? I18n.getMessage('yes')
-        : I18n.getMessage('no'),
-      cookie.parsedCookie.secure
-        ? I18n.getMessage('yes')
-        : I18n.getMessage('no'),
-      cookie.parsedCookie.value,
-      cookie.parsedCookie.path,
-      expires === 'Session' ? I18n.getMessage('session') : expires,
-      cookie.isBlocked ? I18n.getMessage('yes') : I18n.getMessage('no'),
-      cookie.analytics.GDPR || 'NA',
-    ];
-
-    if (isExtension) {
-      recordsArray.push(
-        I18n.getMessage((cookie.parsedCookie?.priority || ' ').toLowerCase()),
-        cookie.parsedCookie?.size?.toString() ?? ' '
-      );
-    }
-
-    recordsArray.map(sanitizeCsvRecord);
-
-    cookieRecords += recordsArray.join(',') + '\r\n';
+    //@ts-ignore
+    cookieRecords.push(cookie);
+  }
+  if (isExtension) {
+    return generateExtensionCookieTableCSV(cookieRecords, true) as string;
+  } else {
+    return generateCLICookieTableCSV(cookieRecords, true) as string;
   }
 
-  return (
-    COOKIES_DATA_HEADER.map((header) => header()).join(',') +
-    '\r\n' +
-    cookieRecords
-  );
+  return '';
 };
 
 export default generateAllCookiesCSV;
diff --git a/packages/design-system/src/components/table/utils/generateCLICookieTableCSV.ts b/packages/common/src/utils/generateReports/generateCLICookieTableCSV.ts
similarity index 82%
rename from packages/design-system/src/components/table/utils/generateCLICookieTableCSV.ts
rename to packages/common/src/utils/generateReports/generateCLICookieTableCSV.ts
index f8b38616..ebdfce65 100644
--- a/packages/design-system/src/components/table/utils/generateCLICookieTableCSV.ts
+++ b/packages/common/src/utils/generateReports/generateCLICookieTableCSV.ts
@@ -16,8 +16,12 @@
 /**
  * External dependencies.
  */
-import { type CookieTableData, sanitizeCsvRecord } from '@google-psat/common';
 import { I18n } from '@google-psat/i18n';
+/**
+ * Internal dependencies.
+ */
+import sanitizeCsvRecord from '../sanitizeCsvRecord';
+import { type CookieTableData } from '../../cookies.types';
 
 const COOKIES_TABLE_DATA_HEADER_CLI = [
   () => I18n.getMessage('name'),
@@ -36,7 +40,10 @@ const COOKIES_TABLE_DATA_HEADER_CLI = [
   () => I18n.getMessage('gdpr'),
 ];
 
-const generateCLICookieTableCSV = (cookies: CookieTableData[]): Blob => {
+const generateCLICookieTableCSV = (
+  cookies: CookieTableData[],
+  returnString = false
+): Blob | string => {
   let cookieRecords = '';
 
   for (const cookie of cookies) {
@@ -48,8 +55,7 @@ const generateCLICookieTableCSV = (cookies: CookieTableData[]): Blob => {
         : I18n.getMessage('thirdParty'),
       cookie.parsedCookie.domain || ' ',
       cookie.parsedCookie.partitionKey || ' ',
-      //@ts-ignore
-      cookie.parsedCookie?.sameSite ?? cookie.parsedCookie?.samesite,
+      I18n.getMessage((cookie.parsedCookie?.samesite ?? 'lax').toLowerCase()),
       I18n.getMessage(
         cookie.analytics?.category?.toLowerCase() || 'uncategorized'
       ),
@@ -70,6 +76,14 @@ const generateCLICookieTableCSV = (cookies: CookieTableData[]): Blob => {
     cookieRecords += recordsArray.join(',') + '\r\n';
   }
 
+  if (returnString) {
+    return (
+      COOKIES_TABLE_DATA_HEADER_CLI.map((header) => header()).join(',') +
+      '\r\n' +
+      cookieRecords
+    );
+  }
+
   return new Blob([
     COOKIES_TABLE_DATA_HEADER_CLI.map((header) => header()).join(',') +
       '\r\n' +
diff --git a/packages/common/src/utils/generateReports/generateCookiesWithIssuesCSV.ts b/packages/common/src/utils/generateReports/generateCookiesWithIssuesCSV.ts
index fa5c5ef3..dddab455 100644
--- a/packages/common/src/utils/generateReports/generateCookiesWithIssuesCSV.ts
+++ b/packages/common/src/utils/generateReports/generateCookiesWithIssuesCSV.ts
@@ -78,12 +78,12 @@ const generateCookiesWithIssuesCSV = (
         : I18n.getMessage('thirdParty'),
       cookie.parsedCookie.domain || ' ',
       cookie.parsedCookie.partitionKey || ' ',
-      cookie.parsedCookie.sameSite,
+      I18n.getMessage((cookie.parsedCookie.samesite ?? 'lax').toLowerCase()),
       I18n.getMessage(
         cookie.analytics?.category?.toLowerCase() || 'uncategorized'
       ),
       cookie.analytics.platform,
-      cookie.parsedCookie.httpOnly
+      cookie.parsedCookie.httponly
         ? I18n.getMessage('yes')
         : I18n.getMessage('no'),
       cookie.parsedCookie.secure
diff --git a/packages/design-system/src/components/table/utils/generatExtensionCookietableCSV.ts b/packages/common/src/utils/generateReports/generateExtensionCookietableCSV.ts
similarity index 84%
rename from packages/design-system/src/components/table/utils/generatExtensionCookietableCSV.ts
rename to packages/common/src/utils/generateReports/generateExtensionCookietableCSV.ts
index 94537937..9b6683e1 100644
--- a/packages/design-system/src/components/table/utils/generatExtensionCookietableCSV.ts
+++ b/packages/common/src/utils/generateReports/generateExtensionCookietableCSV.ts
@@ -16,8 +16,12 @@
 /**
  * External dependencies.
  */
-import { type CookieTableData, sanitizeCsvRecord } from '@google-psat/common';
 import { I18n } from '@google-psat/i18n';
+/**
+ * Internal dependencies.
+ */
+import sanitizeCsvRecord from '../sanitizeCsvRecord';
+import { type CookieTableData } from '../../cookies.types';
 
 const COOKIES_TABLE_DATA_HEADER_EXTENSION = [
   () => I18n.getMessage('name'),
@@ -38,7 +42,10 @@ const COOKIES_TABLE_DATA_HEADER_EXTENSION = [
   () => I18n.getMessage('size'),
 ];
 
-const generateExtensionCookieTableCSV = (cookies: CookieTableData[]): Blob => {
+const generateExtensionCookieTableCSV = (
+  cookies: CookieTableData[],
+  returnString = false
+): Blob | string => {
   let cookieRecords = '';
 
   for (const cookie of cookies) {
@@ -50,7 +57,7 @@ const generateExtensionCookieTableCSV = (cookies: CookieTableData[]): Blob => {
         : I18n.getMessage('thirdParty'),
       cookie.parsedCookie.domain || ' ',
       cookie.parsedCookie.partitionKey || ' ',
-      cookie.parsedCookie.samesite,
+      I18n.getMessage((cookie.parsedCookie.samesite ?? 'lax').toLowerCase()),
       I18n.getMessage(
         cookie.analytics?.category?.toLowerCase() || 'uncategorized'
       ),
@@ -75,6 +82,14 @@ const generateExtensionCookieTableCSV = (cookies: CookieTableData[]): Blob => {
     cookieRecords += recordsArray.join(',') + '\r\n';
   }
 
+  if (returnString) {
+    return (
+      COOKIES_TABLE_DATA_HEADER_EXTENSION.map((header) => header()).join(',') +
+      '\r\n' +
+      cookieRecords
+    );
+  }
+
   return new Blob([
     COOKIES_TABLE_DATA_HEADER_EXTENSION.map((header) => header()).join(',') +
       '\r\n' +
diff --git a/packages/common/src/utils/generateReports/index.ts b/packages/common/src/utils/generateReports/index.ts
index 75a64d39..d4c37769 100644
--- a/packages/common/src/utils/generateReports/index.ts
+++ b/packages/common/src/utils/generateReports/index.ts
@@ -18,3 +18,5 @@ export { default as generateCookiesWithIssuesCSV } from './generateCookiesWithIs
 export { default as generateAllCookiesCSV } from './generateAllCookiesCSV';
 export { default as generateSummaryDataCSV } from './generateSummaryDataCSV';
 export { default as generateTechnologyCSV } from './generateTechnologyCSV';
+export { default as generateCLICookieTableCSV } from './generateCLICookieTableCSV';
+export { default as generateExtensionCookieTableCSV } from './generateExtensionCookietableCSV';
diff --git a/packages/common/src/utils/parseRequestWillBeSentExtraInfo.ts b/packages/common/src/utils/parseRequestWillBeSentExtraInfo.ts
index 072d04d3..c74ea54e 100644
--- a/packages/common/src/utils/parseRequestWillBeSentExtraInfo.ts
+++ b/packages/common/src/utils/parseRequestWillBeSentExtraInfo.ts
@@ -71,7 +71,7 @@ export default function parseRequestWillBeSentExtraInfo(
         ...cookieWithoutPartitionKey,
         httponly: cookieWithoutPartitionKey?.httpOnly ?? false,
         expires: effectiveExpirationDate,
-        samesite: cookie.sameSite?.toLowerCase() ?? '',
+        samesite: cookie.sameSite?.toLowerCase() ?? 'lax',
         domain,
         partitionKey: '',
       },
diff --git a/packages/common/src/utils/parseResponseReceivedExtraInfo.ts b/packages/common/src/utils/parseResponseReceivedExtraInfo.ts
index a04442f1..b538199d 100644
--- a/packages/common/src/utils/parseResponseReceivedExtraInfo.ts
+++ b/packages/common/src/utils/parseResponseReceivedExtraInfo.ts
@@ -96,7 +96,7 @@ export default function parseResponseReceivedExtraInfo(
         ...parsedCookie,
         httponly: parsedCookie?.httponly ?? false,
         expires: effectiveExpirationDate,
-        samesite: parsedCookie.samesite ?? '',
+        samesite: parsedCookie.samesite?.toLowerCase() ?? 'lax',
         domain,
         partitionKey: '',
       },
diff --git a/packages/common/src/utils/sanitizeCsvRecord.ts b/packages/common/src/utils/sanitizeCsvRecord.ts
index 9e07add3..c6e676d3 100644
--- a/packages/common/src/utils/sanitizeCsvRecord.ts
+++ b/packages/common/src/utils/sanitizeCsvRecord.ts
@@ -31,7 +31,9 @@ const sanitizeCsvRecord = (record: unknown): string => {
   }
 
   recordCopy = recordCopy.replace(/"/g, '""');
-  return recordCopy.includes(',') ? '"' + recordCopy + '"' : recordCopy;
+  return recordCopy.includes(',') || recordCopy.includes('"')
+    ? '"' + recordCopy + '"'
+    : recordCopy;
 };
 
 export default sanitizeCsvRecord;
diff --git a/packages/design-system/src/components/circlePieChart/emptyCirclePieChart.tsx b/packages/design-system/src/components/circlePieChart/emptyCirclePieChart.tsx
index efc8faa6..48919547 100644
--- a/packages/design-system/src/components/circlePieChart/emptyCirclePieChart.tsx
+++ b/packages/design-system/src/components/circlePieChart/emptyCirclePieChart.tsx
@@ -32,7 +32,7 @@ const EmptyCirclePieChart = () => {
         colorScale={[COLOR_MAP.brightGray.color]}
         data={[{ x: '', y: 100 }]}
       />
-      <p className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-center opacity-40 text-2xl leading-4'">
+      <p className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-center opacity-40 text-2xl leading-4 dark:text-black">
         0
       </p>
     </div>
diff --git a/packages/design-system/src/components/circlePieChart/index.tsx b/packages/design-system/src/components/circlePieChart/index.tsx
index 403617cf..b9600c89 100644
--- a/packages/design-system/src/components/circlePieChart/index.tsx
+++ b/packages/design-system/src/components/circlePieChart/index.tsx
@@ -56,7 +56,6 @@ const CirclePieChart = ({
             <VictoryPie
               padding={0}
               innerRadius={175}
-              animate={{ duration: 400 }}
               data={data.map(({ count }) => ({ x: '', y: count }))}
               labels={() => ''}
               colorScale={data.map(({ color }) => color)}
diff --git a/packages/design-system/src/components/cookieTable/utils/exportCookies.ts b/packages/design-system/src/components/cookieTable/utils/exportCookies.ts
index 137d18b0..4bd3ed48 100644
--- a/packages/design-system/src/components/cookieTable/utils/exportCookies.ts
+++ b/packages/design-system/src/components/cookieTable/utils/exportCookies.ts
@@ -20,6 +20,8 @@
 import {
   type CookieTableData,
   getCurrentDateAndTime,
+  generateCLICookieTableCSV,
+  generateExtensionCookieTableCSV,
 } from '@google-psat/common';
 import { saveAs } from 'file-saver';
 
@@ -27,10 +29,6 @@ import { saveAs } from 'file-saver';
  * Internal dependencies
  */
 import { TableRow } from '../../table';
-import {
-  generateCLICookieTableCSV,
-  generateExtensionCookieTableCSV,
-} from '../../table/utils';
 
 const exportCookies = (isCLI = false, rows: TableRow[], hostname: string) => {
   const _cookies = rows.map(({ originalData }) => originalData);
diff --git a/packages/design-system/src/components/cookiesLanding/landingHeader/index.tsx b/packages/design-system/src/components/cookiesLanding/landingHeader/index.tsx
index b4cc5510..a5317152 100644
--- a/packages/design-system/src/components/cookiesLanding/landingHeader/index.tsx
+++ b/packages/design-system/src/components/cookiesLanding/landingHeader/index.tsx
@@ -43,10 +43,10 @@ const LandingHeader = ({
       )}
       data-testid="cookies-landing-header"
     >
-      <div className="lg:max-w-[729px] flex gap-9 px-4">
+      <div className="lg:max-w-[729px] flex gap-9">
         {dataMapping.map((circleData, index) => {
           return (
-            <div key={index} className="text-center w-16 h-fit">
+            <div key={index} className="text-center w-fit h-fit">
               <button
                 key={index}
                 className={classnames('group text-center w-20 p-2 h-full', {
diff --git a/packages/design-system/src/components/table/utils/index.ts b/packages/design-system/src/components/table/utils/index.ts
index fab72218..f79c5441 100644
--- a/packages/design-system/src/components/table/utils/index.ts
+++ b/packages/design-system/src/components/table/utils/index.ts
@@ -13,7 +13,4 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-export { default as generateCLICookieTableCSV } from './generateCLICookieTableCSV';
-export { default as generateExtensionCookieTableCSV } from './generatExtensionCookietableCSV';
 export * from './precalculatedFiltersUtils';
diff --git a/packages/design-system/src/utils/prepareFrameStatsComponentForExtensionDashboard.ts b/packages/design-system/src/utils/prepareFrameStatsComponentForExtensionDashboard.ts
index d6d23467..652bb109 100644
--- a/packages/design-system/src/utils/prepareFrameStatsComponentForExtensionDashboard.ts
+++ b/packages/design-system/src/utils/prepareFrameStatsComponentForExtensionDashboard.ts
@@ -16,7 +16,7 @@
 /**
  * External dependencies
  */
-import type { CompleteJson } from '@google-psat/common';
+import type { CompleteJson, TabCookies } from '@google-psat/common';
 import { I18n } from '@google-psat/i18n';
 
 /**
@@ -27,10 +27,12 @@ import { EMPTY_FRAME_COUNT, EMPTY_FRAME_LEGEND } from '../constants';
 /**
  * Calcualte insights about frames to be shown on cookies landing page.
  * @param json Complete json for the Dashboard.
+ * @param tabCookies
  * @returns object
  */
 export default function prepareFrameStatsComponentForExtensionDashboard(
-  json: CompleteJson | null
+  json: CompleteJson | null,
+  tabCookies: TabCookies | null
 ) {
   if (!json) {
     return {
@@ -42,15 +44,38 @@ export default function prepareFrameStatsComponentForExtensionDashboard(
   const blockedCookieFrame = new Set();
   const unBlockedCookieFrame = new Set();
   const cookieFrame = new Set();
+  const filteredCookiesKey = new Set();
+
+  Object.keys(tabCookies || {}).forEach((key) => {
+    filteredCookiesKey.add(key);
+  });
+
+  const cookiesToBeUsed: CompleteJson['cookieData'] = {};
 
   Object.keys(json.cookieData || {}).forEach((frame) => {
+    cookiesToBeUsed[frame] = {
+      frameCookies: {},
+      frameType: json.cookieData[frame]?.frameType ?? '',
+    };
+
+    if (Object.keys(json.cookieData[frame].frameCookies).length > 0) {
+      Object.keys(json.cookieData[frame].frameCookies).forEach((cookieKey) => {
+        if (filteredCookiesKey.has(cookieKey)) {
+          cookiesToBeUsed[frame].frameCookies[cookieKey] =
+            json.cookieData[frame].frameCookies[cookieKey];
+        }
+      });
+    }
+  });
+
+  Object.keys(cookiesToBeUsed || {}).forEach((frame) => {
     let hasBlockedCookie = false;
     let hasUnblockedCookie = false;
 
-    if (Object.keys(json.cookieData[frame].frameCookies).length > 0) {
+    if (Object.keys(cookiesToBeUsed[frame].frameCookies).length > 0) {
       cookieFrame.add(frame);
-      Object.keys(json.cookieData[frame].frameCookies).forEach((cookieKey) => {
-        const cookie = json.cookieData[frame].frameCookies[cookieKey];
+      Object.keys(cookiesToBeUsed[frame].frameCookies).forEach((cookieKey) => {
+        const cookie = cookiesToBeUsed[frame].frameCookies[cookieKey];
         if (cookie?.blockedReasons && cookie?.blockedReasons?.length > 0) {
           hasBlockedCookie = true;
         }
@@ -103,7 +128,7 @@ export default function prepareFrameStatsComponentForExtensionDashboard(
       {
         label: I18n.getMessage('totalFrames'),
         descriptionKey: 'Total frames',
-        count: Object.keys(json.cookieData || {}).length,
+        count: Object.keys(cookiesToBeUsed || {}).length,
         color: '#25ACAD',
         countClassName: 'text-greenland-green',
       },
diff --git a/packages/extension/src/contentScript/types.ts b/packages/extension/src/contentScript/types.ts
index f35aa094..7da2078a 100644
--- a/packages/extension/src/contentScript/types.ts
+++ b/packages/extension/src/contentScript/types.ts
@@ -23,3 +23,15 @@ export interface ResponseType {
   blockedCookies?: number;
   blockedReasons?: string;
 }
+
+// @see https://developer.mozilla.org/en-US/docs/Web/API/CookieStore/getAll
+export type CookieStoreCookie = {
+  name: string;
+  domain: string;
+  expires: number; // UNIX time in miliseconds
+  partitioned: boolean;
+  path: string;
+  sameSite: 'strict' | 'lax' | 'none';
+  secure: boolean;
+  value: string;
+};
diff --git a/packages/extension/src/serviceWorker/createCookieObject.ts b/packages/extension/src/serviceWorker/createCookieObject.ts
index b226fb5c..38ea9f7c 100644
--- a/packages/extension/src/serviceWorker/createCookieObject.ts
+++ b/packages/extension/src/serviceWorker/createCookieObject.ts
@@ -164,7 +164,7 @@ function parseAttributeValues(
       } else if (value === 'unspecified') {
         value = '';
       }
-      value = ((value || '') as string).toLowerCase();
+      value = ((value || 'lax') as string).toLowerCase();
       break;
     case 'size':
       if (!value) {
diff --git a/packages/extension/src/serviceWorker/parseResponseCookieHeader.ts b/packages/extension/src/serviceWorker/parseResponseCookieHeader.ts
index 745599b9..13e16892 100644
--- a/packages/extension/src/serviceWorker/parseResponseCookieHeader.ts
+++ b/packages/extension/src/serviceWorker/parseResponseCookieHeader.ts
@@ -56,8 +56,15 @@ const parseResponseCookieHeader = (
   requestId: string,
   globalIsUsingCDP: boolean
 ): CookieData => {
+  //@ts-ignore because we need httponly and samesite.
   let parsedCookie: CookieData['parsedCookie'] = cookie.parse(value);
 
+  parsedCookie = {
+    ...parsedCookie,
+    httponly: parsedCookie.httponly ?? false,
+    samesite: parsedCookie.samesite?.toLowerCase() ?? 'lax',
+  };
+
   parsedCookie = createCookieObject(
     parsedCookie,
     url,
diff --git a/packages/extension/src/store/synchnorousCookieStore.ts b/packages/extension/src/store/synchnorousCookieStore.ts
index 7e2e0ac3..af9c2525 100644
--- a/packages/extension/src/store/synchnorousCookieStore.ts
+++ b/packages/extension/src/store/synchnorousCookieStore.ts
@@ -632,6 +632,11 @@ class SynchnorousCookieStore {
           const parsedCookie = {
             ...this.tabsData[tabId][cookieKey].parsedCookie,
             ...cookie.parsedCookie,
+            samesite: (
+              cookie.parsedCookie.samesite ??
+              this.tabsData[tabId][cookieKey].parsedCookie.samesite ??
+              'lax'
+            ).toLowerCase(),
             httponly:
               cookie.parsedCookie.httponly ??
               this.tabsData[tabId][cookieKey].parsedCookie.httponly,
diff --git a/packages/extension/src/utils/createCookieFromAuditsIssue.ts b/packages/extension/src/utils/createCookieFromAuditsIssue.ts
index cff30ea7..a7ed0b42 100644
--- a/packages/extension/src/utils/createCookieFromAuditsIssue.ts
+++ b/packages/extension/src/utils/createCookieFromAuditsIssue.ts
@@ -112,6 +112,8 @@ export default function createCookieFromAuditsIssue(
   const cookieObjectToUpdate: CookieData = {
     parsedCookie: {
       ...generatedCookie,
+      //@ts-ignore if the generatedCookie doesnt contain same then it will default to lax
+      samesite: generatedCookie?.httponly?.toLowerCase() ?? 'lax',
       //@ts-ignore if the generatedCookie doesnt contain httpOnly then it will default to false
       httponly: generatedCookie?.httponly ?? false,
       name: generatedCookie?.name ?? '',
diff --git a/packages/extension/src/utils/parseNetworkCookies.ts b/packages/extension/src/utils/parseNetworkCookies.ts
index 7c4a961f..4a903729 100644
--- a/packages/extension/src/utils/parseNetworkCookies.ts
+++ b/packages/extension/src/utils/parseNetworkCookies.ts
@@ -55,7 +55,7 @@ export default function parseNetworkCookies(
         ...cookieWithoutPartitionKey,
         httponly: cookieWithoutPartitionKey?.httpOnly ?? false,
         expires: effectiveExpirationDate,
-        samesite: cookie.sameSite ?? '',
+        samesite: cookie.sameSite?.toLowerCase() ?? 'lax',
         partitionKey: '',
       },
       networkEvents: {
diff --git a/packages/extension/src/utils/processAndStoreDocumentCookies.ts b/packages/extension/src/utils/processAndStoreDocumentCookies.ts
index 3850009d..1ff0f0bb 100644
--- a/packages/extension/src/utils/processAndStoreDocumentCookies.ts
+++ b/packages/extension/src/utils/processAndStoreDocumentCookies.ts
@@ -22,19 +22,19 @@ import {
   type CookieData,
   type CookieDatabase,
 } from '@google-psat/common';
-import { type Cookie as ParsedCookie } from 'simple-cookie';
 
 /**
  * Internal dependencies.
  */
 import { createCookieObject } from '../serviceWorker/createCookieObject';
 import { GET_JS_COOKIES } from '../constants';
+import type { CookieStoreCookie } from '../contentScript/types';
 
 interface ProcessAndStoreDucmentCookies {
   tabUrl: string;
   tabId: string;
   frameId: string;
-  documentCookies: ParsedCookie[];
+  documentCookies: CookieStoreCookie[];
   cookieDB: CookieDatabase;
 }
 
@@ -47,9 +47,15 @@ const processAndStoreDocumentCookies = async ({
 }: ProcessAndStoreDucmentCookies) => {
   try {
     const parsedCookieData: CookieData[] = documentCookies.map(
-      (singleCookie: ParsedCookie) => {
+      (singleCookie: CookieStoreCookie) => {
+        const { sameSite, partitioned, ...cookieWithoutAttributes } =
+          singleCookie;
+
         let parsedCookie = {
-          ...singleCookie,
+          ...cookieWithoutAttributes,
+          partitionKey: partitioned ? '' : '',
+          httponly: false,
+          samesite: sameSite?.toLowerCase() || 'lax',
         };
 
         if (singleCookie.domain) {
@@ -60,6 +66,7 @@ const processAndStoreDocumentCookies = async ({
           parsedCookie.domain = window.location.hostname;
         }
 
+        //@ts-ignore
         parsedCookie = createCookieObject(
           parsedCookie,
           tabUrl,
diff --git a/packages/extension/src/view/devtools/components/cookies/cookieLanding/blockedCookiesSection.tsx b/packages/extension/src/view/devtools/components/cookies/cookieLanding/blockedCookiesSection.tsx
index e20c50d1..6d373561 100644
--- a/packages/extension/src/view/devtools/components/cookies/cookieLanding/blockedCookiesSection.tsx
+++ b/packages/extension/src/view/devtools/components/cookies/cookieLanding/blockedCookiesSection.tsx
@@ -116,6 +116,8 @@ const BlockedCookiesSection = ({ tabCookies }: BlockedCookiesSectionProps) => {
       </a>
       .
     </>
+  ) : cookieStats.blockedCookies.total === 0 ? (
+    'No cookies were blocked by the browser.'
   ) : (
     ''
   );
diff --git a/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/index.tsx b/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/index.tsx
index 1b7e33f6..92183ff5 100644
--- a/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/index.tsx
+++ b/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/index.tsx
@@ -290,7 +290,7 @@ const useCookieListing = (domainsInAllowList: Set<string>) => {
         useGenericPersistenceKey: true,
         comparator: (value: InfoType, filterValue: string) => {
           const val = value as string;
-          return val?.toLowerCase() === filterValue.toLowerCase();
+          return I18n.getMessage(val?.toLowerCase()) === filterValue;
         },
       },
       'parsedCookie.secure': {
diff --git a/packages/extension/src/view/report/dashboardApp.tsx b/packages/extension/src/view/report/dashboardApp.tsx
index 6315af39..75e83e3f 100644
--- a/packages/extension/src/view/report/dashboardApp.tsx
+++ b/packages/extension/src/view/report/dashboardApp.tsx
@@ -46,6 +46,10 @@ const App = () => {
       return;
     }
 
+    if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
+      bodyTag.classList.add('dark');
+    }
+
     bodyTag.style.fontSize = '75%';
   }, []);
 
diff --git a/packages/i18n/_locales/messages/en/messages.json b/packages/i18n/_locales/messages/en/messages.json
index 8a514e61..f2eed863 100644
--- a/packages/i18n/_locales/messages/en/messages.json
+++ b/packages/i18n/_locales/messages/en/messages.json
@@ -1768,7 +1768,7 @@
     "message": "Deprecated Google Sign-In"
   },
   "gSInote": {
-    "message": "The Google Sign-In JavaScript library is deprecated and is no longer supported. Some features of Google Identity Services are in use. Please review the following documentation and $a_tag_start$migrating$a_tag_end$` if necessary.",
+    "message": "The Google Sign-In JavaScript library is deprecated and is no longer supported. Some features of Google Identity Services are in use. Please review the following documentation and $a_tag_start$migrating$a_tag_end$ if necessary.",
     "placeholders": {
       "a_tag_start": {
         "content": "$1",
diff --git a/packages/report/src/dashboard/components/header/index.tsx b/packages/report/src/dashboard/components/header/index.tsx
index 4887d1ba..84af2127 100644
--- a/packages/report/src/dashboard/components/header/index.tsx
+++ b/packages/report/src/dashboard/components/header/index.tsx
@@ -28,7 +28,7 @@ const Header = ({ url, dateTime }: HeaderProps) => {
   const isExtension = globalThis?.PSAT_EXTENSION;
 
   return (
-    <div className="flex justify-between gap-3 px-4 py-2">
+    <div className="flex justify-between gap-3 px-4 py-2 bg-white dark:bg-charleston-green border-b border-hex-gray dark:border-quartz">
       <div className="flex gap-2 items-center">
         <PrivacySandboxColoredIcon className="w-[40px] h-[40px]" />
         <div>
diff --git a/packages/report/src/dashboard/components/siteMapReport/layout.tsx b/packages/report/src/dashboard/components/siteMapReport/layout.tsx
index 10231f6a..40d74453 100644
--- a/packages/report/src/dashboard/components/siteMapReport/layout.tsx
+++ b/packages/report/src/dashboard/components/siteMapReport/layout.tsx
@@ -206,7 +206,7 @@ const Layout = ({
   }, [isKeySelected, selectedItemKey, sidebarData, updateSelectedItemKey]);
 
   return (
-    <div className="w-full h-screen flex">
+    <div className="w-full h-screen flex dark:bg-raisin-black text-raisin-black dark:text-bright-gray">
       <Resizable
         defaultSize={{ width: '200px', height: '100%' }}
         minWidth={'150px'}
diff --git a/packages/report/src/dashboard/components/siteReport/components/layout.tsx b/packages/report/src/dashboard/components/siteReport/components/layout.tsx
index dd8eb58d..24cfb904 100644
--- a/packages/report/src/dashboard/components/siteReport/components/layout.tsx
+++ b/packages/report/src/dashboard/components/siteReport/components/layout.tsx
@@ -188,7 +188,7 @@ const Layout = ({
   }, [selectedSite, updateSelectedItemKey]);
 
   return (
-    <div className="w-full h-full flex">
+    <div className="w-full h-full flex dark:bg-raisin-black text-raisin-black dark:text-bright-gray">
       <Resizable
         defaultSize={{ width: '200px', height: '100%' }}
         minWidth={'150px'}
diff --git a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/blockedCookiesSection.tsx b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/blockedCookiesSection.tsx
index c29013c0..1d7d483d 100644
--- a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/blockedCookiesSection.tsx
+++ b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/blockedCookiesSection.tsx
@@ -116,8 +116,14 @@ const BlockedCookiesSection = ({
       };
     });
 
+  const description =
+    blockedCookiesStats.blockedCookies.total === 0
+      ? 'No cookies were blocked by the browser.'
+      : '';
+
   return (
     <CookiesLandingWrapper
+      description={description}
       dataMapping={blockedCookieDataMapping}
       testId="blocked-cookies-insights"
     >
diff --git a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/framesSection.tsx b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/framesSection.tsx
index 01ce700e..2b7e30fa 100644
--- a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/framesSection.tsx
+++ b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/framesSection.tsx
@@ -16,7 +16,7 @@
 /**
  * External dependencies
  */
-import { getLegendDescription } from '@google-psat/common';
+import { getLegendDescription, type TabCookies } from '@google-psat/common';
 import { I18n } from '@google-psat/i18n';
 import {
   CookiesLandingWrapper,
@@ -26,10 +26,15 @@ import {
   prepareFrameStatsComponentForExtensionDashboard,
 } from '@google-psat/design-system';
 
-const FramesSection = () => {
+interface FramesSectionProps {
+  tabCookies: TabCookies | null;
+}
+
+const FramesSection = ({ tabCookies }: FramesSectionProps) => {
   const framesStats = prepareFrameStatsComponentForExtensionDashboard(
     //@ts-ignore
-    globalThis?.PSAT_DATA.json[0] || {}
+    globalThis?.PSAT_DATA.json[0] || {},
+    tabCookies
   );
 
   const dataComponents: MatrixComponentProps[] = framesStats.legend.map(
diff --git a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/landing.tsx b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/landing.tsx
index dee9bd93..3dac059a 100644
--- a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/landing.tsx
+++ b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/cookieLanding/landing.tsx
@@ -116,6 +116,10 @@ const Landing = ({
         link: 'frames',
         panel: {
           Element: FramesSection,
+          props: {
+            tabCookies,
+            tabFrames,
+          },
         },
       });
     }
diff --git a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/index.tsx b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/index.tsx
index 97cdba76..b3fa0090 100644
--- a/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/index.tsx
+++ b/packages/report/src/dashboard/components/siteReport/tabs/cookies/cookiesLandingContainer/index.tsx
@@ -74,7 +74,6 @@ const AssembledCookiesLanding = ({
 
   // @ts-ignore Using global variable.
   const { dateTime } = globalThis?.PSAT_DATA || {};
-
   const cookiesByKey = useMemo(() => {
     return (
       filterOutput.filteredData.reduce<TabCookies>((acc, cookie) => {
diff --git a/packages/report/src/dashboard/hooks/useCookieListing/index.tsx b/packages/report/src/dashboard/hooks/useCookieListing/index.tsx
index a0218825..b6dfe4ed 100644
--- a/packages/report/src/dashboard/hooks/useCookieListing/index.tsx
+++ b/packages/report/src/dashboard/hooks/useCookieListing/index.tsx
@@ -115,7 +115,7 @@ const useCookieListing = (
       },
       {
         header: I18n.getMessage('sameSite'),
-        accessorKey: 'parsedCookie.sameSite',
+        accessorKey: 'parsedCookie.samesite',
         cell: (info: InfoType) =>
           I18n.getMessage((info?.toString() || '').toLowerCase()),
         widthWeightagePercentage: 8,
@@ -274,7 +274,7 @@ const useCookieListing = (
           return val === (filterValue === I18n.getMessage('true'));
         },
       },
-      'parsedCookie.sameSite': {
+      'parsedCookie.samesite': {
         title: I18n.getMessage('sameSite'),
         hasStaticFilterValues: true,
         filterValues: {
@@ -291,7 +291,7 @@ const useCookieListing = (
         useGenericPersistenceKey: true,
         comparator: (value: InfoType, filterValue: string) => {
           const val = value as string;
-          return val?.toLowerCase() === filterValue.toLowerCase();
+          return I18n.getMessage(val?.toLowerCase()) === filterValue;
         },
       },
       'parsedCookie.secure': {


Test patch:
diff --git a/packages/common/src/utils/tests/sanitizeCsvRecords.ts b/packages/common/src/utils/tests/sanitizeCsvRecords.ts
index cbd85fe5..7e0dc2d0 100644
--- a/packages/common/src/utils/tests/sanitizeCsvRecords.ts
+++ b/packages/common/src/utils/tests/sanitizeCsvRecords.ts
@@ -33,7 +33,7 @@ describe('sanitizeCsvRecord : ', () => {
 
   it('should add double quotes before any double quotes in the string', () => {
     const invalidString = 'a value with "quotes"';
-    const validString = 'a value with ""quotes""';
+    const validString = '"a value with ""quotes"""';
     expect(sanitizeCsvRecord(invalidString)).toBe(validString);
   });
 
diff --git a/packages/extension/src/serviceWorker/tests/parseRequestCookieHeader.ts b/packages/extension/src/serviceWorker/tests/parseRequestCookieHeader.ts
index 703d8633..8f12f557 100644
--- a/packages/extension/src/serviceWorker/tests/parseRequestCookieHeader.ts
+++ b/packages/extension/src/serviceWorker/tests/parseRequestCookieHeader.ts
@@ -34,7 +34,7 @@ const normalCookie1 = {
     path: '/',
     httponly: false,
     secure: false,
-    samesite: '',
+    samesite: 'lax',
     partitionKey: '',
     priority: 'Medium',
     size: 16,
@@ -55,7 +55,7 @@ const normalCookie2 = {
     path: '/',
     httponly: false,
     secure: false,
-    samesite: '',
+    samesite: 'lax',
     partitionKey: '',
     priority: 'Medium',
     size: 16,
@@ -76,7 +76,7 @@ const specialCookie = {
     path: '/',
     httponly: false,
     secure: false,
-    samesite: '',
+    samesite: 'lax',
     partitionKey: '',
     priority: 'Medium',
     size: 26,
@@ -97,7 +97,7 @@ const wildcardCookie = {
     path: '/',
     httponly: false,
     secure: false,
-    samesite: '',
+    samesite: 'lax',
     partitionKey: '',
     priority: 'Medium',
     size: 15,
diff --git a/packages/extension/src/utils/tests/parseHeaders.ts b/packages/extension/src/utils/tests/parseHeaders.ts
index 47980f54..ad38794d 100644
--- a/packages/extension/src/utils/tests/parseHeaders.ts
+++ b/packages/extension/src/utils/tests/parseHeaders.ts
@@ -154,7 +154,7 @@ describe('parseHeaders: ', () => {
           domain: '',
           gdprUrl: '',
           name: '',
-          platform: '',
+          platform: 'Unknown',
           retention: '',
           wildcard: '',
         },
@@ -181,7 +181,7 @@ describe('parseHeaders: ', () => {
           partitionKey: '',
           path: '/',
           priority: 'Medium',
-          samesite: '',
+          samesite: 'lax',
           secure: false,
           size: 570,
           value:
@@ -197,7 +197,7 @@ describe('parseHeaders: ', () => {
           domain: '',
           gdprUrl: '',
           name: '',
-          platform: '',
+          platform: 'Unknown',
           retention: '',
           wildcard: '',
         },
@@ -224,7 +224,7 @@ describe('parseHeaders: ', () => {
           partitionKey: '',
           path: '/',
           priority: 'Medium',
-          samesite: '',
+          samesite: 'lax',
           secure: false,
           size: 29,
           value: 'GA1.1.253380838.1708511136',
@@ -239,7 +239,7 @@ describe('parseHeaders: ', () => {
           domain: '',
           gdprUrl: '',
           name: '',
-          platform: '',
+          platform: 'Unknown',
           retention: '',
           wildcard: '',
         },
@@ -266,7 +266,7 @@ describe('parseHeaders: ', () => {
           partitionKey: '',
           path: '/',
           priority: 'Medium',
-          samesite: '',
+          samesite: 'lax',
           secure: false,
           size: 61,
           value: 'GS1.1.1708580521.2.1.1708580783.60.0.1679255760',
@@ -320,7 +320,7 @@ describe('parseHeaders: ', () => {
           domain: '',
           gdprUrl: '',
           name: '',
-          platform: '',
+          platform: 'Unknown',
           retention: '',
           wildcard: '',
         },
diff --git a/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/tests/useCookieListing.tsx b/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/tests/useCookieListing.tsx
index 1500b6e4..189b43aa 100644
--- a/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/tests/useCookieListing.tsx
+++ b/packages/extension/src/view/devtools/components/cookies/cookiesListing/useCookieListing/tests/useCookieListing.tsx
@@ -97,6 +97,15 @@ describe('useCookieListing', () => {
     extentedTerm: {
       message: 'Extended Term (>1 month)',
     },
+    strict: {
+      message: 'Strict',
+    },
+    lax: {
+      message: 'Lax',
+    },
+    none: {
+      message: 'None',
+    },
   });
 
   it('should return the correct values', () => {
diff --git a/packages/report/src/dashboard/components/utils/tests/data.mock.ts b/packages/report/src/dashboard/components/utils/tests/data.mock.ts
index aa6d32d6..39e525d5 100644
--- a/packages/report/src/dashboard/components/utils/tests/data.mock.ts
+++ b/packages/report/src/dashboard/components/utils/tests/data.mock.ts
@@ -31,9 +31,9 @@ export const tempSinglePageData: CompleteJson = {
             domain: '.cnn.com',
             path: '/',
             value: 'IN',
-            sameSite: 'None',
+            samesite: 'None',
             expires: 'Session',
-            httpOnly: false,
+            httponly: false,
             secure: true,
             partitionKey: '',
           },
@@ -103,9 +103,9 @@ export const tempMultiPageData: CompleteJson[] = [
               domain: '.cnn.com',
               path: '/',
               value: 'IN',
-              sameSite: 'None',
+              samesite: 'None',
               expires: 'Session',
-              httpOnly: false,
+              httponly: false,
               secure: true,
               partitionKey: '',
             },
@@ -155,9 +155,9 @@ export const tempMultiPageData: CompleteJson[] = [
               domain: '.cnn.com',
               path: '/',
               value: 'IN',
-              sameSite: 'None',
+              samesite: 'None',
               expires: 'Session',
-              httpOnly: false,
+              httponly: false,
               secure: true,
               partitionKey: '',
             },
diff --git a/packages/report/src/dashboard/components/utils/tests/extractCookies.ts b/packages/report/src/dashboard/components/utils/tests/extractCookies.ts
index 8738f618..f18da732 100644
--- a/packages/report/src/dashboard/components/utils/tests/extractCookies.ts
+++ b/packages/report/src/dashboard/components/utils/tests/extractCookies.ts
@@ -38,9 +38,9 @@ describe('extractCookies', () => {
             domain: '.cnn.com',
             path: '/',
             value: 'IN',
-            sameSite: 'None',
+            samesite: 'None',
             expires: 'Session',
-            httpOnly: false,
+            httponly: false,
             secure: true,
             partitionKey: '',
           },
@@ -70,9 +70,9 @@ describe('extractCookies', () => {
             domain: '.cnn.com',
             path: '/',
             value: 'IN',
-            sameSite: 'None',
+            samesite: 'None',
             expires: 'Session',
-            httpOnly: false,
+            httponly: false,
             secure: true,
             partitionKey: '',
           },
diff --git a/packages/report/src/dashboard/components/utils/tests/extractReportData.ts b/packages/report/src/dashboard/components/utils/tests/extractReportData.ts
index b0f88b2e..93b498d7 100644
--- a/packages/report/src/dashboard/components/utils/tests/extractReportData.ts
+++ b/packages/report/src/dashboard/components/utils/tests/extractReportData.ts
@@ -38,9 +38,9 @@ describe('extractReportData', () => {
               domain: '.cnn.com',
               path: '/',
               value: 'IN',
-              sameSite: 'None',
+              samesite: 'None',
               expires: 'Session',
-              httpOnly: false,
+              httponly: false,
               secure: true,
               partitionKey: '',
             },
diff --git a/packages/report/src/dashboard/components/utils/tests/reshapeCookies.ts b/packages/report/src/dashboard/components/utils/tests/reshapeCookies.ts
index af754f84..f865cbed 100644
--- a/packages/report/src/dashboard/components/utils/tests/reshapeCookies.ts
+++ b/packages/report/src/dashboard/components/utils/tests/reshapeCookies.ts
@@ -33,9 +33,9 @@ describe('reshapeCookies', () => {
             domain: '.cnn.com',
             path: '/',
             value: 'IN',
-            sameSite: 'None',
+            samesite: 'None',
             expires: 'Session',
-            httpOnly: false,
+            httponly: false,
             secure: true,
             partitionKey: '',
           },
@@ -65,9 +65,9 @@ describe('reshapeCookies', () => {
           domain: '.cnn.com',
           path: '/',
           expires: 'Session',
-          httpOnly: false,
+          httponly: false,
           secure: true,
-          sameSite: 'None',
+          samesite: 'None',
           partitionKey: '',
         },
         analytics: {