From 49c7154f0d1e4d13d275e98ee451f605bdcad459 Mon Sep 17 00:00:00 2001 From: Ivan_Chen Date: Thu, 12 Sep 2024 11:50:09 +0800 Subject: [PATCH] test: add open api documentation test case --- .../e2e/tests/openApiDocumentation.test.ts | 35 +++++++++++++++++++ src/test/e2e/utils/constants.ts | 2 ++ src/test/e2e/utils/vscodeOperator.ts | 12 +++++++ 3 files changed, 49 insertions(+) create mode 100644 src/test/e2e/tests/openApiDocumentation.test.ts diff --git a/src/test/e2e/tests/openApiDocumentation.test.ts b/src/test/e2e/tests/openApiDocumentation.test.ts new file mode 100644 index 0000000..6ea18f4 --- /dev/null +++ b/src/test/e2e/tests/openApiDocumentation.test.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { expect, test } from '../baseTest'; +import { Timeout, VSCode } from '../utils/constants'; +import VscodeOperator from '../utils/vscodeOperator'; + +test('Open API Documentation test', { tag: ["@26611999"] }, async ({ workbox }) => { + //set test timeout + test.setTimeout(120000); + + await workbox.waitForTimeout(Timeout.PREPARE_TEST); + // wait API Center extension installed on VS Code. + expect(await VscodeOperator.isSideTabItemExist(workbox, "API Center")).toBeTruthy(); + await VscodeOperator.activeSideTab(workbox, VSCode.TAB_API_CENTER, Timeout.PREPARE_EXT); + + //expand and validate tree items + await VscodeOperator.clickTreeItemChildLinkByText(workbox, "Teams Cloud - E2E Testing with TTL = 1 Days", "Teams Cloud - E2E Testing with TTL = 1 Days"); + expect(await VscodeOperator.isTreeItemExist(workbox, "apicentertest001")).toBeTruthy(); + await VscodeOperator.clickTreeItem(workbox, "apicentertest001"); + await VscodeOperator.clickTreeItemChildLinkByText(workbox, "APIs", "APIs"); + expect(await VscodeOperator.isTreeItemExist(workbox, "callback-example")).toBeTruthy(); + await VscodeOperator.clickTreeItem(workbox, "callback-example"); + expect(await VscodeOperator.isTreeItemExist(workbox, "Versions")).toBeTruthy(); + await VscodeOperator.clickTreeItem(workbox, "Versions"); + expect(await VscodeOperator.isTreeItemExist(workbox, "1-0-0")).toBeTruthy(); + await VscodeOperator.clickTreeItem(workbox, "1-0-0"); + expect(await VscodeOperator.isTreeItemExist(workbox, "Definitions")).toBeTruthy(); + await VscodeOperator.clickTreeItem(workbox, "Definitions"); + expect(await VscodeOperator.isTreeItemExist(workbox, "openapi")).toBeTruthy(); + + // right click on openapi and select "Open API Documentation" + await VscodeOperator.rightClickTreeItem(workbox, "openapi"); + await VscodeOperator.clickMenuItem(workbox, "Open API Documentation"); +}); diff --git a/src/test/e2e/utils/constants.ts b/src/test/e2e/utils/constants.ts index 51f3714..52273c9 100644 --- a/src/test/e2e/utils/constants.ts +++ b/src/test/e2e/utils/constants.ts @@ -31,6 +31,8 @@ export class VSCode { public static readonly ENTER = "Enter"; //toolbar public static readonly Toolbar = "toolbar"; + // menu items + public static readonly MENU_ITEM = "menuitem"; } export class APICenter { diff --git a/src/test/e2e/utils/vscodeOperator.ts b/src/test/e2e/utils/vscodeOperator.ts index e6c3715..218a676 100644 --- a/src/test/e2e/utils/vscodeOperator.ts +++ b/src/test/e2e/utils/vscodeOperator.ts @@ -46,6 +46,18 @@ export default class VscodeOperator { await page.waitForTimeout(Timeout.CLICK_LONG_WAIT); } + static async rightClickTreeItem(page: Page, treeItemName: string) { + await page.getByRole(VSCode.TREE_ITEM, { name: treeItemName }).locator(VSCode.LINK).click({ + button: 'right' + }); + await page.waitForTimeout(Timeout.CLICK_WAIT); + } + + static async clickMenuItem(page: Page, menuItemName: string) { + await page.getByRole(VSCode.MENU_ITEM, { name: menuItemName }).locator("span.action-label").click(); + await page.waitForTimeout(Timeout.PREPARE_EXT); + } + static async clickTreeItemChildLinkByText(page: Page, treeItemName: string, linkName: string) { await page.getByRole(VSCode.TREE_ITEM, { name: treeItemName }).locator(VSCode.LINK).filter({ hasText: linkName }).click(); await page.waitForTimeout(Timeout.CLICK_LONG_WAIT);