Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
fc17802
test(e2e): verify DAG code is displayed in Code tab
Coding-Alchemist-Abhijay Dec 23, 2025
a9fa23f
bugfix - 1
Coding-Alchemist-Abhijay Dec 23, 2025
a0e02de
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Dec 23, 2025
d733e7a
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Dec 24, 2025
ed037bb
Merge branch 'main' into ui-e2e-dag-code-tab
vatsrahul1001 Dec 24, 2025
208a600
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Dec 24, 2025
4e4c574
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Dec 27, 2025
f9e6b63
Merge branch 'main' into ui-e2e-dag-code-tab
vatsrahul1001 Dec 28, 2025
0a509eb
bugfix- 1
Coding-Alchemist-Abhijay Jan 5, 2026
3673845
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 5, 2026
c25d975
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 5, 2026
06e2f1d
bugfix-2
Coding-Alchemist-Abhijay Jan 7, 2026
eaa0cf9
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 7, 2026
b5fc878
bugfix-3
Coding-Alchemist-Abhijay Jan 7, 2026
e903d60
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 7, 2026
5e3d84c
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 8, 2026
da1a502
bugfix - 4
Coding-Alchemist-Abhijay Jan 8, 2026
b66505b
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 8, 2026
0472a6b
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 9, 2026
08c9439
bugfix - 5
Coding-Alchemist-Abhijay Jan 13, 2026
1cc5d84
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 13, 2026
83e07ce
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 13, 2026
8c4e727
bugfix -6
Coding-Alchemist-Abhijay Jan 15, 2026
813c503
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 15, 2026
19003f2
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 15, 2026
7e61b21
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 15, 2026
8807462
bugfix - 7
Coding-Alchemist-Abhijay Jan 16, 2026
d8fdabe
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 16, 2026
c87af1d
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 16, 2026
c3136d0
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 17, 2026
9fe0149
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 17, 2026
5b68ee8
bugfix - 8
Coding-Alchemist-Abhijay Jan 19, 2026
fc570b0
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 19, 2026
6b3bcc8
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 19, 2026
e5ddf62
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 20, 2026
7b6da0a
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 22, 2026
1518e43
bugfix - 9
Coding-Alchemist-Abhijay Jan 29, 2026
6de5db9
Merge branch 'ui-e2e-dag-code-tab' of https://github.com/Coding-Alche…
Coding-Alchemist-Abhijay Jan 29, 2026
813e537
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 29, 2026
e128eda
bugfix - 10
Coding-Alchemist-Abhijay Jan 30, 2026
b92ddad
Merge branch 'main' into ui-e2e-dag-code-tab
Coding-Alchemist-Abhijay Jan 30, 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
27 changes: 26 additions & 1 deletion airflow-core/src/airflow/ui/tests/e2e/pages/DagsPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,32 @@ export class DagsPage extends BasePage {
.waitFor({ state: "visible", timeout: 30_000 });
}

/**
* Open Dag Code tab using direct URL navigation
*/
public async openCodeTab(dagId: string): Promise<void> {
await this.page.goto(`/dags/${dagId}/code`);
await this.page.waitForLoadState("networkidle");
await this.page.locator(".monaco-editor").waitFor({ state: "visible" });
}

/**
* Get DAG code text from Monaco editor
*/
public async getDagCodeText(): Promise<string> {
const lines = this.page.locator(".monaco-editor .view-line");
await lines.first().waitFor({ state: "visible" });

return (await lines.allTextContents()).join("\n");
}

/**
* Monaco editor root
*/
public getMonacoEditor() {
return this.page.locator(".monaco-editor");
}

/**
* Search for a Dag by name
*/
Expand Down Expand Up @@ -409,7 +435,6 @@ export class DagsPage extends BasePage {
await this.page.waitForTimeout(500);
await this.verifyTableViewVisible();
}

/**
* Trigger a Dag run
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*!
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { test, expect } from "@playwright/test";
import { DagsPage } from "tests/e2e/pages/DagsPage";
import { testConfig } from "playwright.config";

test.describe("Dag Code Tab", () => {
let dagsPage: DagsPage;
const testDagId = testConfig.testDag.id;

test.beforeEach(async ({ page }) => {
dagsPage = new DagsPage(page);
});

test("verify Dag code displays", async () => {
await dagsPage.openCodeTab(testDagId);

const codeText = await dagsPage.getDagCodeText();
expect(codeText.trim().length).toBeGreaterThan(0);
});

test("verify syntax highlighting is applied", async () => {
await dagsPage.openCodeTab(testDagId);

// Look for any token that has styling applied
const highlightedToken = dagsPage
.getMonacoEditor()
.locator(".view-line span[class], .view-line span[style]")
.first();

await expect(highlightedToken).toBeVisible();
});

test("verify line numbers are displayed", async () => {
await dagsPage.openCodeTab(testDagId);

const lineNumbers = dagsPage
.getMonacoEditor()
.locator(".margin-view-overlays");

await expect(lineNumbers).toBeVisible();
});

test("verify code editor is scrollable", async () => {
await dagsPage.openCodeTab(testDagId);

const scrollContainer = dagsPage
.getMonacoEditor()
.locator(".monaco-scrollable-element");

await expect(scrollContainer).toBeVisible();
});
});