diff --git a/apps/vs-code-designer/src/app/utils/__test__/binaries.test.ts b/apps/vs-code-designer/src/app/utils/__test__/binaries.test.ts index b904d0f8e99..97733354522 100644 --- a/apps/vs-code-designer/src/app/utils/__test__/binaries.test.ts +++ b/apps/vs-code-designer/src/app/utils/__test__/binaries.test.ts @@ -143,14 +143,14 @@ describe('binaries', () => { vscode.window.showErrorMessage = showErrorMessage; const result = await getLatestDotNetVersion(context, majorVersion); - expect(result).toBe(DependencyVersion.dotnet6); + expect(result).toBe(DependencyVersion.dotnet8); expect(showErrorMessage).toHaveBeenCalled(); }); it('should return fallback dotnet version when no major version is sent', async () => { const result = await getLatestDotNetVersion(context); - expect(result).toBe(DependencyVersion.dotnet6); + expect(result).toBe(DependencyVersion.dotnet8); }); }); @@ -245,6 +245,17 @@ describe('binaries', () => { expect(showErrorMessage).toHaveBeenCalled(); }); + it('should return fallback nodejs version when requested version is not found in the list', async () => { + const response = [{ tag_name: 'v20.0.0' }, { tag_name: 'v18.0.0' }, { tag_name: 'v16.0.0' }]; + (axios.get as any).mockResolvedValue({ data: response, status: 200 }); + + const result = await getLatestNodeJsVersion(context, '99'); + + expect(result).toBe(DependencyVersion.nodeJs); + expect(context.telemetry.properties.latestNodeJSVersion).toBe('fallback-no-match'); + expect(context.telemetry.properties.errorLatestNodeJsVersion).toBe('No matching Node JS version found.'); + }); + it('should return fallback nodejs version when no major version is sent', async () => { const result = await getLatestNodeJsVersion(context); expect(result).toBe(DependencyVersion.nodeJs); diff --git a/apps/vs-code-designer/src/app/utils/azurite/activateAzurite.ts b/apps/vs-code-designer/src/app/utils/azurite/activateAzurite.ts index 6986287b90d..6d82355dd78 100644 --- a/apps/vs-code-designer/src/app/utils/azurite/activateAzurite.ts +++ b/apps/vs-code-designer/src/app/utils/azurite/activateAzurite.ts @@ -86,10 +86,12 @@ export async function activateAzurite(context: IActionContext, projectPath?: str const isAzuriteRunning = await validateEmulatorIsRunning(context, projectPath, false); if (autoStartAzurite && !isAzuriteRunning) { - await updateWorkspaceSetting(azuriteLocationSetting, azuriteLocationExtSetting, projectPath, azuriteExtensionPrefix); + // Use the configured location, or default to the global default path + const azuriteLocation = azuriteLocationExtSetting || defaultAzuritePathValue; + await updateWorkspaceSetting(azuriteLocationSetting, azuriteLocation, projectPath, azuriteExtensionPrefix); await executeOnAzurite(context, extensionCommand.azureAzuriteStart); context.telemetry.properties.azuriteStart = 'true'; - context.telemetry.properties.azuriteLocation = azuriteLocationExtSetting; + context.telemetry.properties.azuriteLocation = azuriteLocation; } } } diff --git a/apps/vs-code-designer/src/app/utils/binaries.ts b/apps/vs-code-designer/src/app/utils/binaries.ts index 63fb5fd759e..3a28fd3f88a 100644 --- a/apps/vs-code-designer/src/app/utils/binaries.ts +++ b/apps/vs-code-designer/src/app/utils/binaries.ts @@ -82,7 +82,7 @@ export async function downloadAndExtractDependency( // Extract to targetFolder if (dependencyName === dotnetDependencyName) { - const version = dotNetVersion ?? semver.major(DependencyVersion.dotnet6); + const version = dotNetVersion ?? semver.major(DependencyVersion.dotnet8); if (process.platform === Platform.windows) { await executeCommand( ext.outputChannel, @@ -216,12 +216,12 @@ export async function getLatestDotNetVersion(context: IActionContext, majorVersi .catch((error) => { context.telemetry.properties.latestVersionSource = 'fallback'; context.telemetry.properties.errorNewestDotNetVersion = `Error getting latest .NET SDK version: ${error}`; - return DependencyVersion.dotnet6; + return DependencyVersion.dotnet8; }); } context.telemetry.properties.latestVersionSource = 'fallback'; - return DependencyVersion.dotnet6; + return DependencyVersion.dotnet8; } export async function getLatestNodeJsVersion(context: IActionContext, majorVersion?: string): Promise { @@ -238,6 +238,9 @@ export async function getLatestNodeJsVersion(context: IActionContext, majorVersi return releaseVersion; } } + context.telemetry.properties.latestNodeJSVersion = 'fallback-no-match'; + context.telemetry.properties.errorLatestNodeJsVersion = 'No matching Node JS version found.'; + return DependencyVersion.nodeJs; }) .catch((error) => { context.telemetry.properties.latestNodeJSVersion = 'fallback'; diff --git a/apps/vs-code-designer/src/constants.ts b/apps/vs-code-designer/src/constants.ts index c0a7acc7a2f..2308ba5a281 100644 --- a/apps/vs-code-designer/src/constants.ts +++ b/apps/vs-code-designer/src/constants.ts @@ -98,7 +98,7 @@ export const azureWebJobsStorageKey = 'AzureWebJobsStorage'; export const functionsInprocNet8Enabled = 'FUNCTIONS_INPROC_NET8_ENABLED'; export const functionsInprocNet8EnabledTrue = '1'; export const azureWebJobsSecretStorageTypeKey = 'AzureWebJobsSecretStorageType'; -export const workflowappRuntime = 'node|18'; +export const workflowappRuntime = 'node|20'; export const viewOutput = localize('viewOutput', 'View Output'); export const webhookRedirectHostUri = 'Workflows.WebhookRedirectHostUri'; export const workflowAppAADClientId = 'WORKFLOWAPP_AAD_CLIENTID'; @@ -311,9 +311,9 @@ export const defaultDataMapperVersion = 2; // Fallback Dependency Versions export const DependencyVersion = { - dotnet6: '6.0.413', + dotnet8: '8.0.318', funcCoreTools: '4.0.7030', - nodeJs: '18.17.1', + nodeJs: '20.18.3', } as const; export type DependencyVersion = (typeof DependencyVersion)[keyof typeof DependencyVersion]; diff --git a/e2e/testSetup/BlankLogicApp/logicAppStandard.bicep b/e2e/testSetup/BlankLogicApp/logicAppStandard.bicep index 7aa2a70a40f..933c3da5f93 100644 --- a/e2e/testSetup/BlankLogicApp/logicAppStandard.bicep +++ b/e2e/testSetup/BlankLogicApp/logicAppStandard.bicep @@ -60,7 +60,7 @@ resource appService 'Microsoft.Web/sites@2020-06-01' = { } { name: 'WEBSITE_NODE_DEFAULT_VERSION' - value: '~18' + value: '~20' } { name: 'AzureWebJobsStorage'