Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
5b032a1
update .gitignore for zeppelin-react
dididy Oct 25, 2025
ae29780
Convert published paragraph to React by Micro Frontend
dididy Oct 25, 2025
ddc8fc9
fix shared paragraph result's code preview modal and test
dididy Oct 25, 2025
47a22ea
remove dompurify because dangerouslySetInnerHTML not use anymore
dididy Oct 25, 2025
2869d18
change method about global font apply
dididy Oct 25, 2025
0548980
fix missing license
dididy Oct 25, 2025
170f006
remove globa.css
dididy Oct 25, 2025
f4d7338
fix broken tests
dididy Oct 26, 2025
c9b3c08
skip crashed test
dididy Oct 26, 2025
9d7ff5d
fix broken tests
dididy Oct 27, 2025
ae3ac4d
reduce playwright worker on CI(4 to 2)
dididy Oct 28, 2025
cf9b654
fix broken tests
dididy Oct 27, 2025
71b331c
add react relate test scenario
dididy Nov 6, 2025
443ff1d
upgrade TypeScript to 4.9.5 for type checking compatibility
tbonelee Nov 10, 2025
d4884ac
Use @zeppelin-sdk types to fix wrong type definitions
tbonelee Nov 10, 2025
6dbdcdc
Specify chart type in TableVisualization initialization
tbonelee Nov 10, 2025
cfb89b5
Fix omitted column names and refactor to use library APIs
tbonelee Nov 10, 2025
351d404
add code highlighting, ANSI support, and improve E2E tests
dididy Mar 1, 2026
6e57b12
Add ESLint with TypeScript and React support to zeppelin-react package
tbonelee Mar 2, 2026
d557112
apply review
dididy Mar 2, 2026
8392663
resolve tsconfig path parsing error from eslint
dididy Mar 2, 2026
3609487
reduce bundle size 4.4MiB to 139 KiB with lazy loading
dididy Mar 2, 2026
3127a61
fix Cannot use 'import.meta' outside a module error of style
dididy Mar 2, 2026
165fa85
fix react widget lifecycle(script deduplication, add unmount)
dididy Mar 2, 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
4 changes: 2 additions & 2 deletions zeppelin-web-angular/.gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/dist
**/dist
/tmp
/out-tsc

# dependencies
/node_modules
**/node_modules

# profiling files
chrome-profiler-events.json
Expand Down
24 changes: 17 additions & 7 deletions zeppelin-web-angular/angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,16 @@
},
"architect": {
"build": {
"builder": "ngx-build-plus:browser",
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"outputPath": "dist/zeppelin",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.json",
"customWebpackConfig": {
"path": "./webpack.config.js"
},
"assets": [
"src/favicon.ico",
"src/assets",
Expand All @@ -62,6 +65,11 @@
"glob": "**/*",
"input": "./WEB-INF",
"output": "/WEB-INF/"
},
{
"glob": "**/*",
"input": "./projects/zeppelin-react/dist",
"output": "/assets/react/"
}
],
"styles": [
Expand Down Expand Up @@ -100,27 +108,29 @@
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": false
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"namedChunks": true,
"sourceMap": true
}
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "ngx-build-plus:dev-server",
"builder": "@angular-builders/custom-webpack:dev-server",
"options": {
"browserTarget": "zeppelin:build"
"browserTarget": "zeppelin:build",
"port": 4200,
"host": "localhost",
"liveReload": true,
"hmr": true
},
"configurations": {
"production": {
Expand Down
12 changes: 12 additions & 0 deletions zeppelin-web-angular/e2e/models/home-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ export class HomePage extends BasePage {
};
}

async navigateToHome(): Promise<void> {
await this.page.goto('/');
await this.waitForPageLoad();
}

async navigateToLogin(): Promise<void> {
await this.navigateToRoute('/login');
// Wait for potential redirect to complete by checking URL change
Expand Down Expand Up @@ -152,9 +157,16 @@ export class HomePage extends BasePage {
}

async filterNotes(searchTerm: string): Promise<void> {
await this.page.waitForLoadState('domcontentloaded', { timeout: 10000 });
await this.nodeList.filterInput.waitFor({ state: 'visible', timeout: 5000 });
await this.nodeList.filterInput.fill(searchTerm, { timeout: 15000 });
}

async isRefreshIconSpinning(): Promise<boolean> {
const spinAttribute = await this.refreshIcon.getAttribute('nzSpin');
return spinAttribute === 'true' || spinAttribute === '';
}

async waitForRefreshToComplete(): Promise<void> {
await this.waitForElementAttribute('a.refresh-note i[nz-icon]', 'nzSpin', false);
}
Expand Down
6 changes: 2 additions & 4 deletions zeppelin-web-angular/e2e/models/published-paragraph-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,12 @@ import { navigateToNotebookWithFallback } from '../utils';
import { BasePage } from './base-page';

export class PublishedParagraphPage extends BasePage {
readonly paragraphResult: Locator;
readonly errorModalContent: Locator;
readonly errorModalOkButton: Locator;
private readonly errorModalContent: Locator;
private readonly errorModalOkButton: Locator;
readonly confirmationModal: Locator;

constructor(page: Page) {
super(page);
this.paragraphResult = page.locator('zeppelin-notebook-paragraph-result');
this.errorModalContent = this.page.locator('.ant-modal-body', { hasText: 'Paragraph Not Found' }).last();
this.errorModalOkButton = page.getByRole('button', { name: 'OK' }).last();
this.confirmationModal = page.locator('div.ant-modal-confirm').last();
Expand Down
12 changes: 12 additions & 0 deletions zeppelin-web-angular/e2e/models/workspace-page.util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import { expect, Page } from '@playwright/test';
import { BasePage } from './base-page';
import { WorkspacePage } from './workspace-page';
import { performLoginIfRequired, waitForZeppelinReady } from '../utils';

export class WorkspaceUtil extends BasePage {
private workspacePage: WorkspacePage;
Expand All @@ -22,6 +23,17 @@ export class WorkspaceUtil extends BasePage {
this.workspacePage = new WorkspacePage(page);
}

async navigateAndWaitForLoad(): Promise<void> {
await this.workspacePage.navigateToWorkspace();
await performLoginIfRequired(this.page);
await waitForZeppelinReady(this.page);
}

async verifyWorkspaceLayout(): Promise<void> {
await expect(this.workspacePage.workspaceComponent).toBeVisible();
await expect(this.workspacePage.routerOutlet).toBeAttached();
}

async verifyHeaderVisibility(shouldBeVisible: boolean): Promise<void> {
if (shouldBeVisible) {
await expect(this.workspacePage.zeppelinHeader).toBeVisible();
Expand Down
Loading
Loading