Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
152523b
docs(MWPW-191059): add Freyja preview migration spec and implementati…
Axelcureno Apr 1, 2026
a7dd497
feat(MWPW-191059): add Freyja and Odin preview URL constants to paths.js
Axelcureno Apr 1, 2026
41ba251
feat(MWPW-191059): add auth header injection and Freyja-first fallbac…
Axelcureno Apr 1, 2026
ba6ff8f
test(MWPW-191059): update pipeline and replace test mocks for Freyja …
Axelcureno Apr 1, 2026
6d05b53
test(MWPW-191059): update Nala variation spec for Freyja preview URLs
Axelcureno Apr 1, 2026
e0a787d
feat(MWPW-191059): switch fragment-client preview to Freyja v2 with O…
Axelcureno Apr 1, 2026
fecc895
feat(MWPW-191059): switch mas-repository preview URLs to Freyja v2
Axelcureno Apr 1, 2026
4a8b27b
feat(MWPW-191059): add backend toggle, manual token injection, and be…
Axelcureno Apr 1, 2026
67bd494
feat(MWPW-191059): add standalone Freyja benchmark page and configura…
Axelcureno Apr 2, 2026
60957df
Cache Freyja token to sessionStorage after IMS initialization
Axelcureno Apr 3, 2026
89b0a66
Improve Freyja token caching to only cache after user sign-in
Axelcureno Apr 3, 2026
d2976dd
Use Freyja endpoint in fragment-client when token is available
Axelcureno Apr 3, 2026
2196ec6
Fix Freyja Authorization header not being sent in fragment-client.js
Axelcureno Apr 3, 2026
44cdd31
Use production Freyja endpoint instead of localhost
Axelcureno Apr 3, 2026
03ae91f
Merge branch 'main' into MWPW-191059
npeltier Apr 7, 2026
c72cddf
Merge branch 'main' into MWPW-191059
Axelcureno Apr 9, 2026
e060cb1
MWPW-191059: address PR review feedback — remove Odin fallback, conso…
Axelcureno Apr 9, 2026
8eb6848
Merge branch 'main' into MWPW-191059
honstar Apr 10, 2026
68aee50
Merge branch 'main' into MWPW-191059
Axelcureno Apr 13, 2026
1c0bd44
remove docs/superpowers from tracking, add to .gitignore
Axelcureno Apr 13, 2026
cae09d2
MWPW-191059 - use env-aware Freyja URL when aem.env param is set
Axelcureno Apr 15, 2026
d2d3fe5
MWPW-191059 - also use env-aware Freyja URL when freyjaToken is expli…
Axelcureno Apr 15, 2026
a6fab73
MWPW-191059 - point Studio preview at MAS gateway, drop Odin/Freyja-d…
Axelcureno Apr 21, 2026
385bcea
MWPW-191059 - migrate editor translated-locale discovery to gateway p…
Axelcureno Apr 21, 2026
d05668e
MWPW-191059 - remove masFreyjaToken session-storage plumbing
Axelcureno Apr 21, 2026
3b7b1ee
MWPW-191059 - swap ODIN_PREVIEW_URL/FREYJA_PREVIEW_URL for GATEWAY_PR…
Axelcureno Apr 21, 2026
d713277
MWPW-191059 - update doc comment and drop obsolete Freyja-vs-Odin ben…
Axelcureno Apr 21, 2026
7d7206d
MWPW-191059 - rebuild web-components dist after removing masFreyjaToken
Axelcureno Apr 21, 2026
5364aac
Merge remote-tracking branch 'origin/main' into MWPW-191059
Apr 21, 2026
2513393
MWPW-191059 - remove Authorization header injection from internalFetch
Apr 21, 2026
812b539
MWPW-191059 - revert unjustified refactoring of internalFetch
Apr 21, 2026
96fa975
MWPW-191059 - delete io/www/test/fragment/common.test.js
Apr 21, 2026
00307ff
MWPW-191059 - keep dictionary fetchTimeout at 10s
Apr 21, 2026
cb35e47
MWPW-191059 - fix prettier formatting on merged test files
Apr 21, 2026
efd76ee
MWPW-191059 - point variations self-ref test at gateway, not Freyja d…
Apr 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ nala/.auth/
/agents/
reports/
/.superpowers
docs/superpowers/
.logs

# IO Runtime Config
Expand Down
4 changes: 3 additions & 1 deletion io/www/src/fragment/utils/paths.js
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in this file, we need to switch the value of FRAGMENT_URL_PREFIX from https://odin.adobe.com/adobe/sites/fragments to https://odinpreview.corp.adobe.com/adobe/sites/fragments

In the case of preview.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ const MAS_ROOT = '/content/dam/mas';

const FRAGMENT_URL_PREFIX = 'https://odin.adobe.com/adobe/sites/fragments';

const GATEWAY_PREVIEW_URL = 'https://preview.mas.corp.adobe.com/adobe/contentFragments';

const PATH_TOKENS = /\/content\/dam\/mas\/(?<surface>[\w-_]+)\/(?<parsedLocale>[\w-_]+)\/(?<fragmentPath>.+)/;

function rootURL(preview) {
Expand Down Expand Up @@ -43,4 +45,4 @@ function odinUrl(surface, { locale, fragmentPath, preview }) {
return `${rootURL(preview)}?path=${MAS_ROOT}/${surface}/${locale}/${fragmentPath}`;
}

export { PATH_TOKENS, FRAGMENT_URL_PREFIX, MAS_ROOT, odinUrl, odinId, odinReferences };
export { PATH_TOKENS, FRAGMENT_URL_PREFIX, GATEWAY_PREVIEW_URL, MAS_ROOT, odinUrl, odinId, odinReferences };
3 changes: 2 additions & 1 deletion io/www/test/client/fragment-client.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const localStorageStub = {
let objectKeysStub;

describe('FragmentClient', () => {
const baseUrl = 'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments';
const baseUrl = 'https://preview.mas.corp.adobe.com/adobe/contentFragments';
let fetchStub;

before(() => {
Expand All @@ -42,6 +42,7 @@ describe('FragmentClient', () => {
// Stub window.localStorage
globalThis.window = globalThis.window || { localStorage: {} };
sinon.stub(globalThis.window, 'localStorage').value(localStorageStub);
globalThis.window.adobeIMS = { getAccessToken: () => ({ token: 'test-ims-token' }) };
globalThis.localStorage = localStorageStub;
objectKeysStub = sinon.stub(Object, 'keys').callThrough();
objectKeysStub.withArgs(localStorageStub).callsFake(() => Object.keys(storage));
Expand Down
8 changes: 7 additions & 1 deletion io/www/test/fragment/paths.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { expect } from 'chai';
import { PATH_TOKENS, odinReferences, FRAGMENT_URL_PREFIX } from '../../src/fragment/utils/paths.js';
import { PATH_TOKENS, odinReferences, FRAGMENT_URL_PREFIX, GATEWAY_PREVIEW_URL } from '../../src/fragment/utils/paths.js';

describe('PATH_TOKENS', () => {
it('should work with adobe-home surface', async () => {
Expand Down Expand Up @@ -27,3 +27,9 @@ describe('odinReferences', () => {
expect(result).to.equal(`${FRAGMENT_URL_PREFIX}/test-id`);
});
});

describe('GATEWAY_PREVIEW_URL', () => {
it('should point to the MAS preview gateway', () => {
expect(GATEWAY_PREVIEW_URL).to.equal('https://preview.mas.corp.adobe.com/adobe/contentFragments');
});
});
10 changes: 5 additions & 5 deletions io/www/test/fragment/pipeline.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ const EXPECTED_HEADERS = {

const SETTINGS_INDEX_URL_SANDBOX = 'https://odin.adobe.com/adobe/sites/fragments?path=/content/dam/mas/sandbox/settings/index';
const SETTINGS_INDEX_URL_PREVIEW =
'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments?path=/content/dam/mas/sandbox/settings/index';
'https://preview-p22655-e59433.adobeaemcloud.com/adobe/contentFragments?path=/content/dam/mas/sandbox/settings/index';
const SETTINGS_CONTENT_URL = (settingsId) =>
`https://odin.adobe.com/adobe/sites/fragments/${settingsId}?references=all-hydrated`;
const SETTINGS_CONTENT_URL_PREVIEW = (settingsId) =>
`https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments/${settingsId}?references=all-hydrated`;
`https://preview-p22655-e59433.adobeaemcloud.com/adobe/contentFragments/${settingsId}?references=all-hydrated`;

function mockSettings(fetchStub, preview = false, settingsId = 'settings-id') {
const indexUrl = preview ? SETTINGS_INDEX_URL_PREVIEW : SETTINGS_INDEX_URL_SANDBOX;
Expand All @@ -60,8 +60,8 @@ function setupFragmentMocks(fetchStub, { id, path, fields = {} }, preview = fals
// setup settings mocks so pipeline context gets settings
mockSettings(fetchStub, preview);

const odinDomain = `https://${preview ? 'odinpreview.corp' : 'odin'}.adobe.com`;
const odinUriRoot = preview ? '/adobe/sites/cf/fragments' : '/adobe/sites/fragments';
const odinDomain = preview ? 'https://preview-p22655-e59433.adobeaemcloud.com' : 'https://odin.adobe.com';
const odinUriRoot = preview ? '/adobe/contentFragments' : '/adobe/sites/fragments';
// english fragment by id
fetchStub
.withArgs(`${odinDomain}${odinUriRoot}/some-en-us-fragment?references=all-hydrated`)
Expand Down Expand Up @@ -180,7 +180,7 @@ describe('pipeline full use case', () => {
const result = await getFragment({
id: 'some-en-us-fragment',
preview: {
url: 'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments',
url: 'https://preview-p22655-e59433.adobeaemcloud.com/adobe/contentFragments',
},
state: state,
locale: 'fr_FR',
Expand Down
4 changes: 2 additions & 2 deletions io/www/test/fragment/replace.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ const mockDictionaryBySurfaceLocale = (
dictionaryResponse = DICTIONARY_RESPONSE,
stub = fetchStub,
) => {
const odinDomain = `https://${preview ? 'odinpreview.corp' : 'odin'}.adobe.com`;
const odinUriRoot = preview ? '/adobe/sites/cf/fragments' : '/adobe/sites/fragments';
const odinDomain = preview ? 'https://preview-p22655-e59433.adobeaemcloud.com' : 'https://odin.adobe.com';
const odinUriRoot = preview ? '/adobe/contentFragments' : '/adobe/sites/fragments';
const dictionaryId = dictionaryIdFor(surface, locale);

stub.withArgs(`${odinDomain}${odinUriRoot}?path=/content/dam/mas/${surface}/${locale}/dictionary/index`).returns(
Expand Down
2 changes: 1 addition & 1 deletion nala/studio/regional-variations/specs/variations.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ export default {
locale: 'en_CA',
localeName: 'Canada',
price: PRICE_PATTERN.CA.mo,
referencesBaseUrl: 'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments',
referencesBaseUrl: 'https://preview.mas.corp.adobe.com/adobe/contentFragments',
editedTitle: '[selfref] Edited title',
},
tags: '@mas-studio @regional-variations',
Expand Down
19 changes: 14 additions & 5 deletions studio/libs/fragment-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Import the modules
import { logDebug, logError } from '../../io/www/src/fragment/utils/log.js';
import { getRequestMetadata, storeRequestMetadata, extractContextFromMetadata } from '../../io/www/src/fragment/utils/cache.js';
import { GATEWAY_PREVIEW_URL } from '../../io/www/src/fragment/utils/paths.js';
import { transformer as corrector } from '../../io/www/src/fragment/transformers/corrector.js';
import { transformer as fetchFragment } from '../../io/www/src/fragment/transformers/fetchFragment.js';
import { clearDictionaryCache, getDictionary, transformer as replace } from '../../io/www/src/fragment/transformers/replace.js';
Expand Down Expand Up @@ -34,16 +35,22 @@ class LocaleStorageState {
}
}

function getPreviewContext() {
return {
preview: { url: GATEWAY_PREVIEW_URL },
};
}

const DEFAULT_CONTEXT = {
status: 200,
preview:{
url: 'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments',
preview: {
url: GATEWAY_PREVIEW_URL,
},
requestId: 'preview',
state: new LocaleStorageState(),
networkConfig: {
mainTimeout: 20000,
fetchTimeout: 15000,
fetchTimeout: 4000,
retries: 3,
},
locale: 'en_US',
Expand All @@ -67,7 +74,8 @@ async function previewFragment(id, options) {
const locale = serviceElement?.getAttribute('locale');
const country = serviceElement?.getAttribute('country');
let context = { ...DEFAULT_CONTEXT, locale, country, ...options, id, api_key: 'fragment-client' };
const initPromises = {};

const initPromises = {};
const cachedMetadata = await getRequestMetadata(context);
const metadataContext = extractContextFromMetadata(cachedMetadata);
context = { ...context, ...metadataContext };
Expand All @@ -80,6 +88,7 @@ async function previewFragment(id, options) {
...structuredClone(context),
promises: initPromises,
fragmentsIds: context.fragmentsIds,
DEFAULT_HEADERS: context.DEFAULT_HEADERS,
};
initContext.loggedTransformer = `${transformer.name}-init`;
logDebug(() => `Initializing transformer ${transformer.name}`, initContext);
Expand Down Expand Up @@ -151,4 +160,4 @@ async function previewStudioFragment(body, options) {
return context.body;
}

export { clearCaches, previewFragment, previewStudioFragment, customize, settings, replace, getDictionary, corrector };
export { clearCaches, getPreviewContext, previewFragment, previewStudioFragment, customize, settings, replace, getDictionary, corrector };
3 changes: 0 additions & 3 deletions studio/src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,3 @@ export const TABLE_TYPE = {
};

export const TRANSLATIONS_ALLOWED_SURFACES = ['acom', 'acom-cc', 'acom-dc', 'express', 'sandbox', 'nala'];

/** Base URL for Odin preview fragment-by-path checks (e.g. fil_PH .json endpoint). */
export const ODIN_PREVIEW_ORIGIN = 'https://odinpreview.corp.adobe.com';
35 changes: 18 additions & 17 deletions studio/src/mas-fragment-editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import {
CARD_MODEL_PATH,
COLLECTION_MODEL_PATH,
MAS_PRODUCT_CODE_PREFIX,
ODIN_PREVIEW_ORIGIN,
PAGE_NAMES,
TAG_PROMOTION_PREFIX,
} from './constants.js';
import { GATEWAY_PREVIEW_URL } from '../../io/www/src/fragment/utils/paths.js';
import router from './router.js';
import { VARIANTS } from './editors/variant-picker.js';
import { extractLocaleFromPath, generateCodeToUse, getFragmentMapping, replaceLocaleInPath, showToast } from './utils.js';
Expand Down Expand Up @@ -891,6 +891,14 @@ export default class MasFragmentEditor extends LitElement {
return null;
}

async fetchFragmentIdByPath(path) {
const url = `${GATEWAY_PREVIEW_URL}?path=${encodeURIComponent(path)}`;
const res = await fetch(url);
if (!res.ok) return null;
const data = await res.json().catch(() => ({}));
return data.items?.[0]?.id ?? null;
}

async updateTranslatedLocalesStore(isVariation, fragmentPath) {
// Only fetch translations for default fragments, not variations
if (isVariation) {
Expand Down Expand Up @@ -918,17 +926,12 @@ export default class MasFragmentEditor extends LitElement {
if (isFilPh && fragmentPath) {
const enUsPath = replaceLocaleInPath(fragmentPath, 'en_US');
if (enUsPath) {
const enUsUrl = `${ODIN_PREVIEW_ORIGIN}${enUsPath}.json`;
const res = await fetch(enUsUrl);
if (res.ok) {
const data = await res.json().catch(() => ({}));
const enUsFragmentId = data['jcr:uuid'];
if (enUsFragmentId) {
const requestPromise = this.repository.aem.sites.cf.fragments.getTranslations(enUsFragmentId);
this.#translatedLocalesRequest.requestPromise = requestPromise;
const result = await requestPromise;
languageCopies = result.languageCopies ?? [];
}
const enUsFragmentId = await this.fetchFragmentIdByPath(enUsPath);
if (enUsFragmentId) {
const requestPromise = this.repository.aem.sites.cf.fragments.getTranslations(enUsFragmentId);
this.#translatedLocalesRequest.requestPromise = requestPromise;
const result = await requestPromise;
languageCopies = result.languageCopies ?? [];
}
}
}
Expand Down Expand Up @@ -958,11 +961,9 @@ export default class MasFragmentEditor extends LitElement {
const filPhPath = replaceLocaleInPath(fragmentPath, filPhLocale);
if (filPhPath) {
try {
const filPhUrl = `${ODIN_PREVIEW_ORIGIN}${filPhPath}.json`;
const res = await fetch(filPhUrl);
if (res.ok) {
const data = await res.json().catch(() => ({}));
locales = [...locales, { locale: filPhLocale, id: data['jcr:uuid'] ?? null, path: filPhPath }];
const filPhId = await this.fetchFragmentIdByPath(filPhPath);
if (filPhId !== null) {
locales = [...locales, { locale: filPhLocale, id: filPhId, path: filPhPath }];
}
} catch {
// No fil_PH for this fragment.
Expand Down
12 changes: 4 additions & 8 deletions studio/src/mas-repository.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import { Placeholder } from './aem/placeholder.js';
import { getFragmentName } from './translation/translation-utils.js';
import generateFragmentStore from './reactivity/source-fragment-store.js';
import { getDefaultLocaleCode } from '../../io/www/src/fragment/locales.js';
import { getDictionary } from '../libs/fragment-client.js';
import { getDictionary, getPreviewContext } from '../libs/fragment-client.js';
import { applyCorrectorToFragment } from './utils/corrector-helper.js';
import { Promotion } from './aem/promotion.js';

Expand Down Expand Up @@ -793,9 +793,7 @@ export class MasRepository extends LitElement {
// If result is empty and locale isn't en_US, try fallback
if ((!result || Object.keys(result).length === 0) && this.filters.value.locale !== 'en_US') {
const fallbackContext = {
preview: {
url: 'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments',
},
...getPreviewContext(),
locale: 'en_US',
surface: this.search.value.path,
signal: this.#abortControllers.placeholders?.signal,
Expand All @@ -821,9 +819,7 @@ export class MasRepository extends LitElement {

async fetchDictionary(abortController) {
const context = {
preview: {
url: 'https://odinpreview.corp.adobe.com/adobe/sites/cf/fragments',
},
...getPreviewContext(),
locale: this.filters.value.locale,
surface: this.search.value.path,
networkConfig: {
Expand Down Expand Up @@ -2169,7 +2165,7 @@ export class MasRepository extends LitElement {

/**
* Populates the store with addon placeholders by filtering for keys that start with 'addon-'
* Uses the preview dictionary (loaded via odinpreview) instead of slow AEM search
* Uses the preview dictionary (loaded via preview gateway) instead of slow AEM search
*/
async loadAddonPlaceholders() {
const currentOptions = this.#dedupeAddonOptions(Store.placeholders.addons.data.get());
Expand Down
17 changes: 9 additions & 8 deletions studio/test/mas-fragment-editor.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import MasFragmentEditor from '../src/mas-fragment-editor.js';
import Store from '../src/store.js';
import { Fragment } from '../src/aem/fragment.js';
import generateFragmentStore, { SourceFragmentStore } from '../src/reactivity/source-fragment-store.js';
import { PAGE_NAMES, CARD_MODEL_PATH, ODIN_PREVIEW_ORIGIN } from '../src/constants.js';
import { PAGE_NAMES, CARD_MODEL_PATH } from '../src/constants.js';
import { GATEWAY_PREVIEW_URL } from '../../io/www/src/fragment/utils/paths.js';
import router from '../src/router.js';
import Events from '../src/events.js';
import { extractLocaleFromPath } from '../src/utils.js';
Expand Down Expand Up @@ -469,7 +470,7 @@ describe('MasFragmentEditor', () => {

const fetchStub = sandbox.stub(window, 'fetch').resolves({
ok: true,
json: () => Promise.resolve({ 'jcr:uuid': 'fil-ph-frag-id' }),
json: () => Promise.resolve({ items: [{ id: 'fil-ph-frag-id' }] }),
});

await el.updateTranslatedLocalesStore(false, fragmentPath);
Expand All @@ -484,7 +485,7 @@ describe('MasFragmentEditor', () => {
});
expect(fetchStub.calledOnce).to.be.true;
expect(fetchStub.firstCall.args[0]).to.equal(
`${ODIN_PREVIEW_ORIGIN}/content/dam/mas/acom/fil_PH/my-fragment.json`,
`${GATEWAY_PREVIEW_URL}?path=${encodeURIComponent('/content/dam/mas/acom/fil_PH/my-fragment')}`,
);
} finally {
Store.fragmentEditor.translatedLocales.value = originalTranslatedLocales;
Expand Down Expand Up @@ -660,7 +661,7 @@ describe('MasFragmentEditor', () => {
}
});

it('adds fil_PH with id null when response json has no id', async () => {
it('skips fil_PH entry when response json has no id', async () => {
const el = document.createElement('mas-fragment-editor');
const originalTranslatedLocales = Store.fragmentEditor.translatedLocales.value;
try {
Expand All @@ -676,14 +677,14 @@ describe('MasFragmentEditor', () => {
el.editorContextStore = { isVariation: sandbox.stub().returns(false) };
sandbox.stub(window, 'fetch').resolves({
ok: true,
json: () => Promise.resolve({}),
json: () => Promise.resolve({ items: [] }),
});

await el.updateTranslatedLocalesStore(false, '/content/dam/mas/acom/en_US/my-fragment');

const locales = Store.fragmentEditor.translatedLocales.get();
const filPh = locales.find((l) => l.locale === 'fil_PH');
expect(filPh).to.deep.include({ locale: 'fil_PH', id: null, path: '/content/dam/mas/acom/fil_PH/my-fragment' });
expect(filPh).to.be.undefined;
} finally {
Store.fragmentEditor.translatedLocales.value = originalTranslatedLocales;
Store.fragmentEditor.fragmentId.value = null;
Expand Down Expand Up @@ -712,7 +713,7 @@ describe('MasFragmentEditor', () => {
el.editorContextStore = { isVariation: sandbox.stub().returns(false) };
const fetchStub = sandbox.stub(window, 'fetch').resolves({
ok: true,
json: () => Promise.resolve({ 'jcr:uuid': enUsFragmentId }),
json: () => Promise.resolve({ items: [{ id: enUsFragmentId }] }),
});

await el.updateTranslatedLocalesStore(false, filPhPath);
Expand All @@ -721,7 +722,7 @@ describe('MasFragmentEditor', () => {
expect(locales).to.have.lengthOf(3);
expect(getTranslations.calledOnceWith(enUsFragmentId)).to.be.true;
expect(fetchStub.firstCall.args[0]).to.equal(
`${ODIN_PREVIEW_ORIGIN}/content/dam/mas/acom/en_US/my-fragment.json`,
`${GATEWAY_PREVIEW_URL}?path=${encodeURIComponent('/content/dam/mas/acom/en_US/my-fragment')}`,
);
const enUs = locales.find((l) => l.locale === 'en_US');
expect(enUs).to.deep.include({
Expand Down
Loading
Loading