Skip to content

Comments

HBASE-29878 Improve the Documentation UI#7722

Open
yuriipalam wants to merge 5 commits intoapache:masterfrom
yuriipalam:HBASE-29878
Open

HBASE-29878 Improve the Documentation UI#7722
yuriipalam wants to merge 5 commits intoapache:masterfrom
yuriipalam:HBASE-29878

Conversation

@yuriipalam
Copy link
Contributor

@yuriipalam yuriipalam commented Feb 9, 2026

As discussed earlier here https://lists.apache.org/thread/0ojmobpnyk44lbghqxh2c231c3bm6t6t
I’m presenting the new documentation website. You can check this out here:
https://hbase-landing.vercel.app/docs/

What’s been done:

  • Converted all asciidoc files to mdx (extended markdown). 99% of the content preserved, checked it manually multiple times.
  • Multi-page by default, single-page as an alternative option for those who got used to it.
  • Multi-page has a powerful search. The whole website is static and pre-rendered at a build time.
  • “Edit on GitHub” button is at the bottom of each section that leads directly to the source of the section. Doesn’t work in the demo website because it leads to the original repo, and the change is not merged yet.
  • Dark mode support.
  • The UI now looks modern and beautiful, the user/dev experience is improved significantly.
  • The landing page and documentation are now one application.
  • The PDF generation is integrate into the build process. PDFs are also available in both Dark and Light modes.
  • The old docs are still available at "/book.html" with a banner that the page is legacy, so people with bookmarks/notes won't get the 404 error.

Thanks!

Copy link
Contributor

@PDavid PDavid left a comment

Choose a reason for hiding this comment

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

Many thanks Yurii for this nice PR. What a changeset! I think it is a new record. 😃

Copy link
Contributor

@Jaehui-Lee Jaehui-Lee left a comment

Choose a reason for hiding this comment

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

The new docs look much more modern and polished. Great work!

DocsPage as FumaDocsPage,
DocsTitle as FumaDocsTitle
} from "@/components/docs/layout/docs/page";
import defaultMdxComponents from "fumadocs-ui/mdx";
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: A link icon appears on heading hover, but it's not clickable since it disappears when moving the cursor toward it. It might be better to just hide it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's by the framework design. I think there is a UX reason behind this

@ndimiduk
Copy link
Member

Heya @yuriipalam can you try squishing down your commit history. I've seen Yetus have trouble when there's too many commits. But, I'm 90% sure that these failures were due to a transient failure in the github API... I've been seeing the fail unicorn a lot lately. Anyway, give that a try, hopefully at least the general check will run. Thank boss!

@yuriipalam
Copy link
Contributor Author

@ndimiduk thanks, done

@PDavid
Copy link
Contributor

PDavid commented Feb 18, 2026

Can you please look into if these can be fixed?

$ mvn clean install -DskipTests && mvn site -pl hbase-website

...

[INFO] 15 vulnerabilities (1 low, 13 moderate, 1 high)
[INFO] 
[INFO] To address issues that do not require attention, run:
[INFO]   npm audit fix
[INFO] 
[INFO] To address all issues (including breaking changes), run:
[INFO]   npm audit fix --force
[INFO] 
[INFO] Run `npm audit` for details.

...

@yuriipalam
Copy link
Contributor Author

Can you please look into if these can be fixed?

$ mvn clean install -DskipTests && mvn site -pl hbase-website

...

[INFO] 15 vulnerabilities (1 low, 13 moderate, 1 high)
[INFO] 
[INFO] To address issues that do not require attention, run:
[INFO]   npm audit fix
[INFO] 
[INFO] To address all issues (including breaking changes), run:
[INFO]   npm audit fix --force
[INFO] 
[INFO] Run `npm audit` for details.

...

I looked and seems like at the moment they can't be. These are new and packages that rely on these packages didn't release a newer fix version yet. We should check in a few days. Nevertheless, we're not really affected by that. We just return static assets and do not accept any input from the user. Theoretically, we could have just put the whole website on CDN because it has no server behind. So no worries :)

@PDavid
Copy link
Contributor

PDavid commented Feb 18, 2026

It seems even though you squashed your commits - now we don't have too many commits - Yetus PR build still fails - summary is not generated. Probably this is because of the very large change-set size.

@PDavid
Copy link
Contributor

PDavid commented Feb 19, 2026

Many thanks Yurii for the improvements. 👍

When I build the website (mvn clean install -DskipTests && mvn site -DskipTests -pl hbase-website) these playwright e2e tests seems to be flaky - sometimes they fails, sometimes they are successful (The PDF-s are generated though successfully):

[INFO] > test:e2e
[INFO] > playwright test
[INFO] 
[INFO] 
[INFO] Running 105 tests using 10 workers
         1) [chromium] › e2e-tests/docs.spec.ts:113:3 › Documentation Page - Search Functionality › can open search dialog by clicking button 
[INFO] 
[INFO]     Error: expect(locator).toBeVisible() failed
[INFO] 
[INFO]     Locator: getByRole('dialog', { name: /Search/i })
[INFO]     Expected: visible
[INFO]     Timeout: 5000ms
[INFO]     Error: element(s) not found
[INFO] 
[INFO]     Call log:
[INFO]       - Expect "toBeVisible" with timeout 5000ms
[INFO]       - waiting for getByRole('dialog', { name: /Search/i })
[INFO] 
[INFO] 
[INFO]       124 |     // Verify dialog opened
[INFO]       125 |     const searchDialog = page.getByRole("dialog", { name: /Search/i });
[INFO]     > 126 |     await expect(searchDialog).toBeVisible();
[INFO]           |                                ^
[INFO]       127 |   });
[INFO]       128 |
[INFO]       129 |   test("can type in search input", async ({ page }) => {
[INFO]         at /home/david/projects/upstream/hbase/hbase-website/e2e-tests/docs.spec.ts:126:32
[INFO] 
[INFO]     Error Context: test-results/docs-Documentation-Page----2120c-h-dialog-by-clicking-button-chromium/error-context.md
[INFO] 
         2) [chromium] › e2e-tests/docs.spec.ts:129:3 › Documentation Page - Search Functionality › can type in search input 
[INFO] 
[INFO]     Error: expect(locator).toBeVisible() failed
[INFO] 
[INFO]     Locator: getByRole('textbox', { name: /Search/i })
[INFO]     Expected: visible
[INFO]     Timeout: 5000ms
[INFO]     Error: element(s) not found
[INFO] 
[INFO]     Call log:
[INFO]       - Expect "toBeVisible" with timeout 5000ms
[INFO]       - waiting for getByRole('textbox', { name: /Search/i })
[INFO] 
[INFO] 
[INFO]       138 |     // Find and type in search input
[INFO]       139 |     const searchInput = page.getByRole("textbox", { name: /Search/i });
[INFO]     > 140 |     await expect(searchInput).toBeVisible();
[INFO]           |                               ^
[INFO]       141 |
[INFO]       142 |     await searchInput.fill("configuration");
[INFO]       143 |     await expect(searchInput).toHaveValue("configuration");
[INFO]         at /home/david/projects/upstream/hbase/hbase-website/e2e-tests/docs.spec.ts:140:31
[INFO] 
[INFO]     Error Context: test-results/docs-Documentation-Page----ec9a6-ty-can-type-in-search-input-chromium/error-context.md
[INFO] 
         3) [chromium] › e2e-tests/docs.spec.ts:146:3 › Documentation Page - Search Functionality › can close search with ESC key 
[INFO] 
[INFO]     Error: expect(locator).toBeVisible() failed
[INFO] 
...
[INFO] ✅ All PDF exports validated successfully!
          Light: 921 pages
          Dark:  921 pages
         3 failed
[INFO]     [chromium] › e2e-tests/docs.spec.ts:113:3 › Documentation Page - Search Functionality › can open search dialog by clicking button 
[INFO]     [chromium] › e2e-tests/docs.spec.ts:129:3 › Documentation Page - Search Functionality › can type in search input 
[INFO]     [chromium] › e2e-tests/docs.spec.ts:146:3 › Documentation Page - Search Functionality › can close search with ESC key 
[INFO]   2 skipped
[INFO]   100 passed (2.4m)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  06:44 min
[INFO] Finished at: 2026-02-19T11:21:21+01:00
[INFO] ------------------------------------------------------------------------

Is there a way to skip the tests in the hbase-website build? Adding -DskipTests does not seems to do that. 🤔

@yuriipalam
Copy link
Contributor Author

It seems even though you squashed your commits - now we don't have too many commits - Yetus PR build still fails - summary is not generated. Probably this is because of the very large change-set size.

Sure, but what can we do about it?

@yuriipalam
Copy link
Contributor Author

Is there a way to skip the tests in the hbase-website build? Adding -DskipTests does not seems to do that. 🤔

I can add that

@PDavid
Copy link
Contributor

PDavid commented Feb 19, 2026

For testing this I published the website with this new documentation to our staging website at: https://hbase-beta.staged.apache.org/docs/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants