Path: blob/main/extensions/copilot/test/simulation/inlineEdit/inlineEdit.stest.ts
13394 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/4import { XtabProvider } from '../../../src/extension/xtab/node/xtabProvider';5import { ConfigKey } from '../../../src/platform/configuration/common/configurationService';6import { Configuration, ISimulationSuiteDescriptor, ssuite, stest } from '../../base/stest';7import { inlineEditsFixture, loadFile } from './fileLoading';8import { InlineEditTester } from './inlineEditTester';910const CompScore1 = 'CompScore1';11const CompScore2 = 'CompScore2';12const CompScore3 = 'CompScore3';1314function getTester() {15return new InlineEditTester();16}1718type TestConfiguration = {19providerName: string;20extensionConfiguration: Configuration<any>[];21/**22* Default is true.23*/24shouldBeRun?: boolean;25};2627const commonXtabTestConfigurations: Configuration<unknown>[] = [28// uncomment to include viewed files29// {30// key: ConfigKey.Internal.InlineEditsXtabIncludeViewedFiles,31// value: true,32// },33];3435const testConfigs: TestConfiguration[] = [36{37providerName: 'xtab',38extensionConfiguration: [39{40key: ConfigKey.TeamInternal.InlineEditsProviderId,41value: XtabProvider.ID,42},43...commonXtabTestConfigurations,44],45}46];4748for (const testConfig of testConfigs) {4950const providerName = testConfig.providerName;5152function ssuiteByProvider(descr: ISimulationSuiteDescriptor, testRegistrationFactory: () => void) {53if (providerName === 'server') {54return ssuite.optional( // remember: optional tests aren't run in CI (which matches current desired behavior but don't be surprised)55(opts) => !opts.runServerPoweredNesProvider,56descr,57testRegistrationFactory58);59} else {60return ssuite(descr, testRegistrationFactory);61}62}6364ssuiteByProvider({ title: 'InlineEdit GoldenScenario', subtitle: `[${testConfig.providerName}]`, location: 'external', configurations: testConfig.extensionConfiguration }, () => {6566const tester = getTester();6768stest({ description: '[MustHave] 1-point.ts', language: 'typescript', attributes: { [CompScore1]: 1, [CompScore2]: 0.5, [CompScore3]: 0 } }, collection => tester.runAndScoreTestFromRecording(collection,69loadFile({ filePath: inlineEditsFixture('1-point.ts/recording.w.json') }),70));7172stest({ description: '[NiceToHave] 2-helloworld-sample-remove-generic-parameter', language: 'typescript', attributes: { [CompScore1]: 0 } }, collection => tester.runAndScoreTestFromRecording(collection,73loadFile({ filePath: inlineEditsFixture('2-helloworld-sample-remove-generic-parameter/recording.w.json') }),74));7576stest({ description: '[MustHave] 6-vscode-remote-try-java-part-1', language: 'java', attributes: { [CompScore1]: 1, [CompScore2]: 1, [CompScore3]: 0.75 } }, collection => tester.runAndScoreTestFromRecording(collection,77loadFile({ filePath: inlineEditsFixture('6-vscode-remote-try-java-part-1/recording.w.json') }),78));7980// TODO: this test case is weird, it overspecifies like directing via comments81stest({ description: '[MustHave] 6-vscode-remote-try-java-part-2', language: 'java', attributes: { [CompScore1]: 1, [CompScore2]: 1, [CompScore3]: 0.75 } }, collection => tester.runAndScoreTestFromRecording(collection,82loadFile({ filePath: inlineEditsFixture('6-vscode-remote-try-java-part-2/recording.w.json') })83));8485// 7 covered in "From codium"8687stest({ description: '[MustHave] 8-cppIndividual-1-point.cpp', language: 'cpp', attributes: { [CompScore1]: 1, [CompScore2]: 0, [CompScore3]: 1 } }, collection => tester.runAndScoreTestFromRecording(collection,88loadFile({ filePath: inlineEditsFixture('8-cppIndividual-1-point.cpp/recording.w.json') }),89));9091stest({ description: '[MustHave] 8-cppIndividual-2-collection-farewell', language: 'cpp', attributes: { [CompScore1]: 1, [CompScore2]: 0.5, [CompScore3]: 0.5 } }, collection => tester.runAndScoreTestFromRecording(collection,92loadFile({ filePath: inlineEditsFixture('8-cppIndividual-2-collection-farewell/recording.w.json') }),93));9495stest({ description: '[MustHave] 9-cppProject-add-header-expect-implementation', language: 'cpp', attributes: { [CompScore1]: 1, [CompScore2]: 0.66, [CompScore3]: 0.5 } }, collection => tester.runAndScoreTestFromRecording(collection,96loadFile({ filePath: inlineEditsFixture('9-cppProject-add-header-expect-implementation/recording.w.json') })97));9899stest({ description: '[MustHave] 9-cppProject-add-implementation-expect-header', language: 'cpp', attributes: { [CompScore1]: 1, [CompScore2]: 0, [CompScore3]: 1 } }, collection => tester.runAndScoreTestFromRecording(collection,100loadFile({ filePath: inlineEditsFixture('9-cppProject-add-implementation-expect-header/recording.w.json') }),101));102103stest({ description: 'Notebook 10-update-name-in-same-cell-of-notebook', language: 'python' }, collection => tester.runAndScoreTestFromRecording(collection,104loadFile({105filePath: inlineEditsFixture('10-update-name-in-same-cell-of-notebook/recording.w.json'),106})107));108109stest({ description: 'Notebook 11-update-name-in-next-cell-of-notebook', language: 'python' }, collection => tester.runAndScoreTestFromRecording(collection,110loadFile({111filePath: inlineEditsFixture('11-update-name-in-next-cell-of-notebook/recording.w.json'),112})113));114115});116117}118119120