Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Fix: When new page is added to `toc`, deploy `all-pages.json` to have added pages loaded on page reload
4 changes: 4 additions & 0 deletions znai-docs/znai/release-notes/2025.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# 1.83

:include-markdowns: 1.83

# 1.82

:include-markdowns: 1.82
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,14 @@ public void onTocChange(Path tocPath) {
previewSocket.sendToc(tocAddedUpdatedAndRemovedPages.tableOfContents());

if (!tocAddedUpdatedAndRemovedPages.addedOrUpdatedPagesProps().isEmpty()) {
ConsoleOutputs.out("added/updated pages detected");
previewSocket.sendPages(tocAddedUpdatedAndRemovedPages.addedOrUpdatedPagesProps().stream()
.map(HtmlPageAndPageProps::props));
previewWebSite.buildJsonOfAllPages();
}

if (!tocAddedUpdatedAndRemovedPages.removedTocItems().isEmpty()) {
ConsoleOutputs.out("removed pages detected");
previewSocket.sendPagesRemove(tocAddedUpdatedAndRemovedPages.removedTocItems().stream());
}
});
Expand Down
26 changes: 23 additions & 3 deletions znai-tests/src/test/groovy/scenarios/preview.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ import static pages.Pages.*
def scaffoldedPathCache = cache.value('scaffolded-docs-for-preview')

scenario('scaffold docs and run preview') {
def tempPath = fs.tempDir('znai-scaffold-for-preview')
CliCommands.znai.run('new', cli.workingDir(tempPath))
def scaffoldPath = fs.tempDir('znai-scaffold-for-preview')
CliCommands.znai.run('new', cli.workingDir(scaffoldPath))

def docsPath = tempPath.resolve("guide")
def docsPath = scaffoldPath.resolve("guide")
scaffoldedPathCache.set(docsPath.toString())

def port = 3457
Expand All @@ -48,6 +48,26 @@ scenario('footer should be updated on footer file change') {
standardView.footer.waitTo == "new footer"
}

scenario('toc update should redeploy all pages json and new page link should be active on page reload') {
def docsPath = scaffoldedPathCache.getAsPath()
fs.createDir(docsPath.resolve("new-chapter"))
fs.writeText(docsPath.resolve("new-chapter/new-page.md"), "new page content")

def tocPath = docsPath.resolve("toc")
def tocContent = fs.textContent(tocPath).data
fs.writeText(tocPath, tocContent + "\nnew-chapter\n new-page.md")

def newPageTocItem = standardView.tocItems.get("New Page")
newPageTocItem.waitToBe visible
standardView.pageTitle.should == "New Page"

standardView.pageTwoTocItem.click()
browser.refresh()

newPageTocItem.click()
standardView.pageTitle.waitTo == "New Page"
}

scenario('preview jumps to a page associated with a change') {
def docsPath = scaffoldedPathCache.getAsPath()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -699,7 +699,7 @@ private void generateLlmContent() {
deployer.deploy("llm.txt", llmContent);
}

private void buildJsonOfAllPages() {
public void buildJsonOfAllPages() {
List<Map<String, ?>> listOfMaps = this.pagePropsByTocItem
.values().stream().map(DocPageReactProps::toMap).collect(toList());
String json = JsonUtils.serialize(listOfMaps);
Expand Down