Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
e065b61
version history first phase.
seanchoi-dev Oct 13, 2025
c4494ad
lint / formatting issue fix.
seanchoi-dev Oct 13, 2025
44ee53c
Merge branch 'main' into MWPW-180210
seanchoi-dev Oct 13, 2025
58a964b
Fixing unit test.
seanchoi-dev Oct 13, 2025
fec75eb
Merge branch 'MWPW-180210' of github.com:adobecom/mas into MWPW-180210
seanchoi-dev Oct 13, 2025
91efcfe
Fixing unit test.
seanchoi-dev Oct 13, 2025
5438c31
Fixing unit test.
seanchoi-dev Oct 13, 2025
2e55d80
lint / formatting issue fix.
seanchoi-dev Oct 13, 2025
bff8358
Fixing unit test from other branches.
seanchoi-dev Oct 13, 2025
3097711
Merge branch 'main' into MWPW-180210
seanchoi-dev Oct 21, 2025
b9d8edf
Merge branch 'main' into MWPW-180210
3ch023 Oct 24, 2025
2955779
removing console.logs
seanchoi-dev Oct 28, 2025
59376e8
remove unused files.
seanchoi-dev Oct 28, 2025
45a9112
Current version -> latest version.
seanchoi-dev Oct 28, 2025
ec462dd
Remove the check
seanchoi-dev Oct 29, 2025
508ce18
Style update.
seanchoi-dev Oct 30, 2025
e050a64
Putting default options in aem.js
seanchoi-dev Oct 30, 2025
6833d69
Merge branch 'main' into MWPW-180210
seanchoi-dev Oct 30, 2025
7f92a88
Merge branch 'main' into MWPW-180210
seanchoi-dev Nov 3, 2025
17a1594
icon to use sp-icon-history, etc.
seanchoi-dev Nov 3, 2025
0cfe9c9
Merge branch 'MWPW-180210' of github.com:adobecom/mas into MWPW-180210
seanchoi-dev Nov 3, 2025
ab3c587
Merge branch 'main' into MWPW-180210
seanchoi-dev Nov 3, 2025
a4b8ae4
unit tests fixes.
seanchoi-dev Nov 3, 2025
e6f98ea
Trying to fix nala tests.
seanchoi-dev Nov 3, 2025
11ae6bf
Trying to fix nala tests.
seanchoi-dev Nov 3, 2025
5dd0125
Trying to fix nala tests.
seanchoi-dev Nov 3, 2025
b76f5d1
Trying to fix nala tests.
seanchoi-dev Nov 3, 2025
7b49e37
Trying to fix nala tests.
seanchoi-dev Nov 3, 2025
e7d5831
Merge branch 'main' into MWPW-180210
seanchoi-dev Nov 4, 2025
736a550
Merge branch 'main' into MWPW-180210
3ch023 Nov 5, 2025
a04e3ff
wip
seanchoi-dev Nov 14, 2025
f41a7b8
Preparing code review.
seanchoi-dev Nov 26, 2025
32ff792
swc build
seanchoi-dev Nov 27, 2025
28416e1
more front-end works.
seanchoi-dev Nov 27, 2025
e07f5dc
remove unused menu items.
seanchoi-dev Nov 27, 2025
8ed6258
merge
seanchoi-dev Nov 29, 2025
9edd453
after merge
seanchoi-dev Nov 29, 2025
a9cf510
Avoid console error: Cannot read properties of undefined (reading 'DE…
seanchoi-dev Dec 1, 2025
8ea15fd
Back to before.
seanchoi-dev Dec 1, 2025
d6425f2
Back to before.
seanchoi-dev Dec 1, 2025
e4d07ae
more css match to mockup
seanchoi-dev Dec 1, 2025
cf15bf6
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 1, 2025
01e9c59
Fixing icon rendering issue
seanchoi-dev Dec 1, 2025
e8a4392
update npm registry
seanchoi-dev Dec 1, 2025
61173f0
Remove overflow css
seanchoi-dev Dec 1, 2025
1e291f2
Revert "update npm registry"
seanchoi-dev Dec 1, 2025
f4ed850
fixing unit tests.
seanchoi-dev Dec 1, 2025
6c06620
This should avoid unit test errors.
seanchoi-dev Dec 1, 2025
c2e7697
remove old test that from last pr
seanchoi-dev Dec 1, 2025
8a65acb
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 2, 2025
d2d4a72
css update
seanchoi-dev Dec 2, 2025
83d524c
Adding nala tests.
seanchoi-dev Dec 2, 2025
b7ea8ef
Trying to fix nala tests.
seanchoi-dev Dec 2, 2025
ef53248
Trying to fix nala tests.
seanchoi-dev Dec 2, 2025
536337f
author name style update.
seanchoi-dev Dec 2, 2025
eeff655
more matching color code
seanchoi-dev Dec 2, 2025
dd3e2e0
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 3, 2025
b3268cb
nit: update for lint rule
seanchoi-dev Dec 3, 2025
b2de7e0
Merge branch 'MWPW-183410' of github.com:adobecom/mas into MWPW-183410
seanchoi-dev Dec 3, 2025
d9ad250
Applying new mocukup
seanchoi-dev Dec 3, 2025
d56c607
Adding the color border back
seanchoi-dev Dec 3, 2025
85bdfbb
Update nala test and added unit test for version page.
seanchoi-dev Dec 3, 2025
89e8c6f
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 3, 2025
f47cd34
test update
seanchoi-dev Dec 3, 2025
ce7c97c
polishing.
seanchoi-dev Dec 3, 2025
c52d7a2
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 4, 2025
ac6c2c1
nit: removed not used import.
seanchoi-dev Dec 4, 2025
44a4644
Refactoring code according to the review.
seanchoi-dev Dec 4, 2025
4789b20
Fixing the unit tests.
seanchoi-dev Dec 4, 2025
7340bed
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 5, 2025
592bdb0
box shadow update
seanchoi-dev Dec 5, 2025
9264cdc
Merge branch 'MWPW-183410' of github.com:adobecom/mas into MWPW-183410
seanchoi-dev Dec 5, 2025
e7e4d2b
current date fix.
seanchoi-dev Dec 5, 2025
1a43813
Applying Milica's comments
seanchoi-dev Dec 11, 2025
641abf8
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 11, 2025
699aa2b
cleanup for fields 1
seanchoi-dev Dec 15, 2025
8607fd1
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 15, 2025
4ca7780
Fixing and rewriting versioning
seanchoi-dev Dec 16, 2025
8d3c319
Remove old version binds.
seanchoi-dev Dec 16, 2025
2d5ad8a
wip
seanchoi-dev Dec 16, 2025
ae062f9
Breadscrumb
seanchoi-dev Dec 16, 2025
438c66a
unit test updates.
seanchoi-dev Dec 16, 2025
54e192a
pretty formatter update.
seanchoi-dev Dec 16, 2025
8ed3788
unit test update.
seanchoi-dev Dec 16, 2025
a242c58
update nala tests
seanchoi-dev Dec 16, 2025
974174b
update nala tests
seanchoi-dev Dec 16, 2025
8b51de5
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 16, 2025
84a96c4
Revert "update nala tests"
seanchoi-dev Dec 16, 2025
703cb35
Merge branch 'MWPW-183410' of github.com:adobecom/mas into MWPW-183410
seanchoi-dev Dec 16, 2025
ff197ab
Removing maslib.js
seanchoi-dev Dec 16, 2025
7da751a
Merge branch 'main' into MWPW-183410
afmicka Dec 17, 2025
2620da0
remove all version-panel.js since we removed the file.
seanchoi-dev Dec 17, 2025
1839589
Refactoring the breadcrumb to be more expandable.
seanchoi-dev Dec 17, 2025
07a9dbb
Confirmation dialog update, versioning details update.
seanchoi-dev Dec 18, 2025
048d0ba
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 19, 2025
2f07412
Fixed the fragment title description bug from restoring.
seanchoi-dev Dec 19, 2025
52911e8
Adding and fixing unit tests.
seanchoi-dev Dec 19, 2025
4c374de
nit: format update.
seanchoi-dev Dec 19, 2025
d4adda0
Combining tests to reduce odin calls.
seanchoi-dev Dec 19, 2025
f25159f
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 19, 2025
398de65
Trying to fix nala tests.
seanchoi-dev Dec 19, 2025
6ebc770
removing fragmentId from URL when user leaves the version page.
seanchoi-dev Dec 19, 2025
35315b8
Bug fix: Missing fragment after visiting version page.
seanchoi-dev Dec 19, 2025
000d14f
Size issue fixed.
seanchoi-dev Dec 22, 2025
d3210ec
js error from console error fixed.
seanchoi-dev Dec 22, 2025
53aa2d3
nit: formatter fix.
seanchoi-dev Dec 22, 2025
5b960da
Merge branch 'main' into MWPW-183410
seanchoi-dev Dec 22, 2025
690fce6
Fix a bug from size fix.
seanchoi-dev Dec 22, 2025
6e58132
formatter fix
seanchoi-dev Dec 22, 2025
e4b07cb
secure label bug fix.
seanchoi-dev Jan 5, 2026
d976282
Merge branch 'main' into MWPW-183410
seanchoi-dev Jan 5, 2026
45ff051
fragment id update
seanchoi-dev Jan 5, 2026
1073d81
Merge branch 'main' into MWPW-183410
afmicka Jan 6, 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
220 changes: 220 additions & 0 deletions nala/studio/version-page.page.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
export default class VersionPage {
constructor(page) {
this.page = page;

// Version page main container
this.versionPage = page.locator('version-page');
this.versionPageWrapper = page.locator('version-page .version-page-wrapper');

// Breadcrumbs
this.breadcrumbs = page.locator('version-page sp-breadcrumbs');
this.breadcrumbItems = page.locator('version-page sp-breadcrumb-item');
this.breadcrumbHome = page.locator('version-page sp-breadcrumb-item').first();
this.breadcrumbCurrent = page.locator('version-page sp-breadcrumb-item').last();

// Version list panel
this.versionListPanel = page.locator('version-page .version-list-panel');
this.versionListHeader = page.locator('version-page .version-list-header');
this.versionListContent = page.locator('version-page .version-list-content');

// Search functionality
this.searchInput = page.locator('version-page sp-search');
this.searchInputField = page.locator('version-page sp-search input');

// Version status and items
this.versionStatus = page.locator('version-page .version-status');
this.currentDot = page.locator('version-page .current-dot');
this.versionItems = page.locator('version-page .version-item');
this.currentVersionItem = page.locator('version-page .version-item.current');
this.selectedVersionItem = page.locator('version-page .version-item.selected');

// Version item details
this.versionDateTime = page.locator('version-page .version-date-time');
this.versionAuthor = page.locator('version-page .version-author');
this.versionDescription = page.locator('version-page .version-description');
this.versionMenu = page.locator('version-page .version-menu');

// Preview panel
this.previewPanel = page.locator('version-page .preview-panel');
this.previewContent = page.locator('version-page .preview-content');
this.previewSplit = page.locator('version-page .preview-split');
this.previewColumns = page.locator('version-page .preview-column');
this.previewColumn = page.locator('version-page .preview-column').first();

// Preview details
this.previewColumnHeader = page.locator('version-page .preview-column-header');
this.previewColumnDate = page.locator('version-page .preview-column-date');
this.diffBadge = page.locator('version-page .diff-badge');
this.fragmentPreview = page.locator('version-page .fragment-preview-wrapper');
this.merchCard = page.locator('version-page merch-card');

// Changed fields section
this.fragmentInfo = page.locator('version-page .fragment-info');
this.changedFieldsLabel = page.locator('version-page .changed-fields-label');
this.changedFieldsList = page.locator('version-page .changed-fields-list');
this.changedFieldItems = page.locator('version-page .changed-fields-list li');
this.changedFieldDetail = page.locator('version-page .changed-field-detail');

// Loading states
this.loadingSpinner = page.locator('version-page sp-progress-circle');
this.loadingMessage = page.locator('version-page .loading-message');

// Empty states
this.noFragmentMessage = page.locator('version-page .no-fragment-message');
this.noDataMessage = page.locator('version-page .no-data-message');
}

/**
* Navigate to version page for a specific fragment
*/
async navigateToVersionPage(fragmentId, basePath = 'nala') {
// Use page.evaluate to set the store and trigger router navigation
await this.page.evaluate(
({ fId, path }) => {
if (window.Store && window.Store.version && window.Store.version.fragmentId) {
window.Store.version.fragmentId.set(fId);
window.Store.page.set('version');
window.Store.path.set(path);
// Also update the hash
window.location.hash = `#page=version&path=${path}&fragment=${fId}`;
}
},
{ fId: fragmentId, path: basePath },
);
await this.page.waitForTimeout(2000);
}

/**
* Get version by index (0-based, where 0 is the current version)
*/
getVersionByIndex(index) {
return this.versionItems.nth(index);
}

/**
* Select a version by clicking on it
*/
async selectVersionByIndex(index) {
const versionItem = this.getVersionByIndex(index);
await versionItem.click();
await this.page.waitForTimeout(1000);
}

/**
* Search for versions
*/
async searchVersions(query) {
await this.searchInputField.fill(query);
await this.page.waitForTimeout(500);
}

/**
* Clear search
*/
async clearSearch() {
await this.searchInputField.clear();
await this.page.waitForTimeout(500);
}

/**
* Open version action menu for a specific version
*/
async openVersionMenu(index) {
const versionItem = this.getVersionByIndex(index);
const menu = versionItem.locator('sp-action-menu');
await menu.click();
await this.page.waitForTimeout(300);
}

/**
* Wait for version page to be fully loaded
*/
async waitForVersionPageLoaded() {
// Wait for router to process hash params and load the page
await this.page.waitForTimeout(3000);

// Wait for the version page element with longer timeout
await this.versionPage.waitFor({ state: 'visible', timeout: 30000 });

// Wait for version list to load
await this.page.waitForSelector('version-page .version-item', { timeout: 30000 });

// Wait for any loading spinner to disappear
await this.page
.waitForFunction(
() => {
const spinners = document.querySelectorAll('version-page sp-progress-circle');
return (
spinners.length === 0 || Array.from(spinners).every((s) => s.style.display === 'none' || !s.isConnected)
);
},
{ timeout: 20000 },
)
.catch(() => {});

// Additional wait for rendering
await this.page.waitForTimeout(2000);
}

/**
* Wait for preview to update
*/
async waitForPreviewUpdate() {
// Wait for preview content to be visible
await this.previewContent.waitFor({ state: 'visible', timeout: 10000 });

// Wait for any loading spinner in preview to disappear
await this.page.waitForTimeout(1500);
}

/**
* Navigate back to content using breadcrumbs
*/
async navigateBackToContent() {
await this.breadcrumbHome.click();
await this.page.waitForTimeout(1000);
}

/**
* Get version count
*/
async getVersionCount() {
return await this.versionItems.count();
}

/**
* Get changed fields count
*/
async getChangedFieldsCount() {
return await this.changedFieldItems.count();
}

/**
* Get changed field text by index
*/
async getChangedFieldText(index) {
const item = this.changedFieldItems.nth(index);
const detail = item.locator('sp-detail');
return await detail.textContent();
}

/**
* Check if changed fields section is visible
*/
async hasChangedFields() {
return await this.changedFieldsLabel.isVisible().catch(() => false);
}

/**
* Get all changed field texts
*/
async getAllChangedFields() {
const count = await this.getChangedFieldsCount();
const fields = [];
for (let i = 0; i < count; i++) {
const text = await this.getChangedFieldText(i);
fields.push(text.trim());
}
return fields;
}
}
36 changes: 36 additions & 0 deletions nala/studio/version-page.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
export default {
FeatureName: 'M@S Studio - Version Page',
features: [
{
tcid: '0',
name: '@version-page-load',
path: '/studio.html',
data: {
fragmentId: '48a759ce-3c9a-4158-9bc3-b21ffa07e8e4',
},
browserParams: '#page=version&path=nala&fragmentId=',
tags: '@mas-studio @version',
},
{
tcid: '1',
name: '@version-page-preview',
path: '/studio.html',
data: {
fragmentId: '48a759ce-3c9a-4158-9bc3-b21ffa07e8e4',
},
browserParams: '#page=version&path=nala&fragmentId=',
tags: '@mas-studio @version',
},
{
tcid: '2',
name: '@version-page-search',
path: '/studio.html',
data: {
fragmentId: '48a759ce-3c9a-4158-9bc3-b21ffa07e8e4',
searchQuery: '1.0',
},
browserParams: '#page=version&path=nala&fragmentId=',
tags: '@mas-studio @version',
},
],
};
Loading