Skip to content

Conversation

@dididy
Copy link
Contributor

@dididy dididy commented Dec 6, 2025

What is this PR for?

In #5101, the amount of changes became too large, and a committer suggested splitting it into smaller parts. Since the updates related to the common test environment and shared utility functions have already proven to be stable, I separated those pieces into this dedicated PR.

This PR includes only the safe, standalone changes that improve the shared E2E environment and utilities.

[Summary of Changes]

  • Refined and separated E2E test environment setup

    • Improved global setup/teardown

      • CI: using ZEPPELIN_E2E_TEST_NOTEBOOK_DIR
      • To use ZEPPELIN_E2E_TEST_NOTEBOOK_DIR locally, the server has to be restarted at least once, which feels a bit odd to enforce during E2E test execution. To make things less messy from a UI perspective, I reorganized the structure so that all tests are collected under E2E_TEST_FOLDER instead.
    • Added folder/notebook initialization and cleanup logic

      • you can run it standalone with this command:npm run e2e:cleanup(automatically run this once the tests are finished)
  • Extracted shared utilities and constants

    • Added common E2E constant (e.g., E2E_TEST_FOLDER)
    • Introduced cleanup utilities to ensure stable post-test state
  • Updated GitHub Actions (frontend.yml)

    • Added environment variables(for python interpreter), notebook repo initialization, and cleanup steps
    • Due to potential storage and cost concerns, I shortened the retention period for the Playwright report from 30 days to 3 days
  • Updated Playwright / ESLint configurations

    • ts to cjs

What type of PR is it?

Improvement
Refactoring

Todos

What is the Jira issue?

ZEPPELIN-6358

How should this be tested?

cd zeppelin-web-angular
nvm use
npm run start
npm run e2e
npm run e2e:cleanup

Screenshots (if appropriate)

Questions:

  • Does the license files need to update? No
  • Is there breaking changes for older versions? No
  • Does this needs documentation? No

@dididy dididy force-pushed the e2e/notebook-base branch from d0e0380 to fc44d9c Compare December 6, 2025 15:22
@dididy dididy force-pushed the e2e/notebook-base branch from 83424ae to 1f45f33 Compare December 8, 2025 14:45
Comment on lines 116 to 119
- name: Setup Zeppelin Configuration (Disable Git)
run: |
echo "Setting ZEPPELIN_NOTEBOOK_STORAGE environment variable"
echo "ZEPPELIN_NOTEBOOK_STORAGE=org.apache.zeppelin.notebook.repo.VFSNotebookRepo" >> $GITHUB_ENV
Copy link
Contributor

Choose a reason for hiding this comment

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

Why set ZEPPELIN_NOTEBOOK_STORAGE in a separate step instead of in the job's env section?

run-playwright-e2e-tests:
  env:
    ZEPPELIN_NOTEBOOK_STORAGE: org.apache.zeppelin.notebook.repo.VFSNotebookRepo

Is there a specific reason for the current approach?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

a07052f
Thanks for the suggestion. I’ve updated it to include it in the env step, which seemed like the better approach.

// Find the test folder
const testFolders = data.body.filter(
(item: { path: string }) =>
item.path && item.path.split(E2E_TEST_FOLDER)[0] === '/' && !item.path.includes(`~Trash`)
Copy link
Contributor

Choose a reason for hiding this comment

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

This might be subjective, but item.path.split('/')[1] === E2E_TEST_FOLDER felt a bit easier for me to understand at a glance.
Using split('/') makes it clearer that we’re checking the first segment of the path.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

e6033e8
I’ve updated it according to the conditions you mentioned.

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.

2 participants