From 2a31787d2c770d1924b4f48f5ce57f05f7a0697e Mon Sep 17 00:00:00 2001 From: qfai Date: Tue, 30 Dec 2025 14:06:35 +0800 Subject: [PATCH 1/7] fix: support lowercase for legacy sample --- packages/tests/src/commonlib/botValidator.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/tests/src/commonlib/botValidator.ts b/packages/tests/src/commonlib/botValidator.ts index 40ec9e0633f..a91953a3baa 100644 --- a/packages/tests/src/commonlib/botValidator.ts +++ b/packages/tests/src/commonlib/botValidator.ts @@ -139,8 +139,10 @@ export class BotValidator { ); chai.assert.exists(response); if (runtime === Runtime.Node) { + // Support both "clientId" (lowercase) and "CLIENT_ID" (uppercase) for different samples + const actualBotId = response["clientId"] || response[BaseConfig.clientId]; chai.assert.equal( - response[BaseConfig.clientId], + actualBotId, this.ctx[EnvConstants.BOT_ID] as string, "bot ID should match" ); From 72fed36d69dcde33c48dbde4894389a3bb5aabaf Mon Sep 17 00:00:00 2001 From: qfai Date: Tue, 30 Dec 2025 15:08:02 +0800 Subject: [PATCH 2/7] fix: remove NPM-search-connector-M365 test case --- .../e2e/samples/ProvisionNpmSearch.tests.ts | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 packages/tests/src/e2e/samples/ProvisionNpmSearch.tests.ts diff --git a/packages/tests/src/e2e/samples/ProvisionNpmSearch.tests.ts b/packages/tests/src/e2e/samples/ProvisionNpmSearch.tests.ts deleted file mode 100644 index b9eadf7329f..00000000000 --- a/packages/tests/src/e2e/samples/ProvisionNpmSearch.tests.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -/** - * @author Ivan Chen - */ - -import { TemplateProjectFolder } from "../../utils/constants"; -import { CaseFactory } from "./sampleCaseFactory"; - -class NpmSearchTestCase extends CaseFactory {} - -new NpmSearchTestCase( - TemplateProjectFolder.NpmSearch, - 15277471, - "qidon@microsoft.com", - ["bot"] -).test(); From b1443d529feda3fbe546dcb23f5ddab6e89be398 Mon Sep 17 00:00:00 2001 From: qfai Date: Tue, 30 Dec 2025 16:07:04 +0800 Subject: [PATCH 3/7] fix: provision proactive message e2e test via change the path --- .../tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts b/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts index 1a0a732f0d6..11e815a1e76 100644 --- a/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts +++ b/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts @@ -28,7 +28,7 @@ class ProactiveMessagingTestCase extends CaseFactory { override async onBeforeProvision(projectPath: string): Promise { await setBotSkuNameToB1Bicep( projectPath, - "templates/azure/azure.parameters.dev.json" + "nodejs/templates/azure/azure.parameters.dev.json" ); } From 86899580ddda96de7cf0857db81d75e03e57406d Mon Sep 17 00:00:00 2001 From: qfai Date: Wed, 31 Dec 2025 12:55:00 +0800 Subject: [PATCH 4/7] fix: proactive messaging test case --- .../src/e2e/samples/ProvisionProactiveMessage.tests.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts b/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts index 11e815a1e76..7cce8c77a66 100644 --- a/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts +++ b/packages/tests/src/e2e/samples/ProvisionProactiveMessage.tests.ts @@ -16,19 +16,21 @@ class ProactiveMessagingTestCase extends CaseFactory { testFolder: string, sampleName: TemplateProjectFolder ): Promise { + // The sample has nodejs/ and python/ subdirectories + // Use the nodejs subfolder path directly as specified in samples-config downloadUrlInfo.dir await Executor.openTemplateProject( appName, testFolder, - sampleName, + "nodejs" as TemplateProjectFolder, undefined, - "samples" + `samples/${sampleName}` ); } override async onBeforeProvision(projectPath: string): Promise { await setBotSkuNameToB1Bicep( projectPath, - "nodejs/templates/azure/azure.parameters.dev.json" + "templates/azure/azure.parameters.dev.json" ); } From 9091824545b80d2679a9f80c53bf5c5cf9e41d4a Mon Sep 17 00:00:00 2001 From: qfai Date: Wed, 31 Dec 2025 13:34:40 +0800 Subject: [PATCH 5/7] fix(fx-core): add .NET 7.0/8.0/9.0 to supported versions in dotnetChecker The devTool/install action was failing with DotnetInstallationError because dotnetChecker only supported .NET 3.1/5.0/6.0 but CI uses .NET 8.0. This fix adds .NET 7.0, 8.0, and 9.0 to the supportedVersions array so that the checker can detect and use newer .NET installations. --- .../component/deps-checker/internal/dotnetChecker.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts b/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts index c1a05b780a2..a7ab3bdf7f2 100644 --- a/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts +++ b/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts @@ -28,11 +28,21 @@ export enum DotnetVersion { v31 = "3.1", v50 = "5.0", v60 = "6.0", + v70 = "7.0", + v80 = "8.0", + v90 = "9.0", } type DotnetSDK = { version: string; path: string }; const DotnetCoreSDKName = ".NET Core SDK"; const installVersion = isMacOS() && isArm64() ? DotnetVersion.v60 : DotnetVersion.v31; -const supportedVersions = [DotnetVersion.v31, DotnetVersion.v50, DotnetVersion.v60]; +const supportedVersions = [ + DotnetVersion.v31, + DotnetVersion.v50, + DotnetVersion.v60, + DotnetVersion.v70, + DotnetVersion.v80, + DotnetVersion.v90, +]; const installedNameWithVersion = `${DotnetCoreSDKName} (v${DotnetVersion.v31})`; export class DotnetChecker implements DepsChecker { From c1259366ecfd0ae8447dfa9807865ab726221207 Mon Sep 17 00:00:00 2001 From: qfai Date: Sun, 4 Jan 2026 13:57:29 +0800 Subject: [PATCH 6/7] fix(e2e): remove ChefBot test - teams-ai repo renamed to teams-sdk The microsoft/teams-ai repo was renamed to microsoft/teams-sdk and underwent major restructuring. The ChefBot sample moved to release/v1 branch and path no longer exists on main branch. --- .../src/e2e/samples/ProvisionChefBot.tests.ts | 45 ------------------- 1 file changed, 45 deletions(-) delete mode 100644 packages/tests/src/e2e/samples/ProvisionChefBot.tests.ts diff --git a/packages/tests/src/e2e/samples/ProvisionChefBot.tests.ts b/packages/tests/src/e2e/samples/ProvisionChefBot.tests.ts deleted file mode 100644 index 6cfe64e1c4c..00000000000 --- a/packages/tests/src/e2e/samples/ProvisionChefBot.tests.ts +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -/** - * @author Ivan Chen - */ - -import { TemplateProjectFolder } from "../../utils/constants"; -import { CaseFactory } from "./sampleCaseFactory"; -import { Executor } from "../../utils/executor"; -import * as fs from "fs-extra"; -import * as path from "path"; -import { expect } from "chai"; - -class ChefBotTestCase extends CaseFactory { - public override async onCreate( - appName: string, - testFolder: string, - sampleName: TemplateProjectFolder - ): Promise { - await Executor.openTemplateProject( - appName, - testFolder, - sampleName, - undefined, - "js/samples/04.ai-apps" - ); - } - public override async onAfterCreate(projectPath: string): Promise { - expect(fs.pathExistsSync(path.resolve(projectPath, "infra"))).to.be.true; - fs.mkdirSync(path.resolve(projectPath, "env"), { - recursive: true, - }); - const userFile = path.resolve(projectPath, "env", ".env.dev"); - const KEY = "SECRET_OPENAI_KEY=MY_OPENAI_API_KEY"; - fs.writeFileSync(userFile, KEY); - console.log(`add key ${KEY} to .env.dev file`); - } -} - -new ChefBotTestCase( - TemplateProjectFolder.ChefBot, - 25227103, - "ning.tang@microsoft.com" -).test(); From 22aca51f8bcc9a4edd544b38544644c6b581b229 Mon Sep 17 00:00:00 2001 From: qfai Date: Sun, 4 Jan 2026 15:41:14 +0800 Subject: [PATCH 7/7] fix: add v10 donet support --- .../src/component/deps-checker/internal/dotnetChecker.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts b/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts index a7ab3bdf7f2..ec14500f87b 100644 --- a/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts +++ b/packages/fx-core/src/component/deps-checker/internal/dotnetChecker.ts @@ -31,6 +31,7 @@ export enum DotnetVersion { v70 = "7.0", v80 = "8.0", v90 = "9.0", + v10 = "10.0", } type DotnetSDK = { version: string; path: string }; const DotnetCoreSDKName = ".NET Core SDK"; @@ -42,6 +43,7 @@ const supportedVersions = [ DotnetVersion.v70, DotnetVersion.v80, DotnetVersion.v90, + DotnetVersion.v10, ]; const installedNameWithVersion = `${DotnetCoreSDKName} (v${DotnetVersion.v31})`;