Verified Commit 3fd178b9 authored by Olena Horal-Koretska's avatar Olena Horal-Koretska 2️⃣ Committed by GitLab
Browse files

feat: Add LS startup telemetry

parent a4c8fa15
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ module.exports = {
  env: {
    isTelemetryEnabled: true,
    uriScheme: 'vscode',
    remoteName: undefined,
    clipboard: {
      writeText: jest.fn(),
      readText: jest.fn(),
+9 −0
Original line number Diff line number Diff line
@@ -47,4 +47,13 @@ describe('GitLabTelemetryEnvironmentBrowser', () => {
      },
    });
  });

  it('getOs returns navigator.platform when userAgentData is unavailable', () => {
    Object.defineProperty(global, 'navigator', {
      value: { platform: 'MacIntel' },
      configurable: true,
    });

    expect(subject.getOs()).toBe('MacIntel');
  });
});
+7 −0
Original line number Diff line number Diff line
@@ -17,6 +17,13 @@ export class GitLabTelemetryEnvironmentBrowser implements GitLabTelemetryEnviron
    return this.#webIdeExtension?.isTelemetryEnabled() || false;
  }

  getOs(): string {
    // navigator.userAgentData is experimental and not in the standard DOM types yet
    const uaData = (navigator as Navigator & { userAgentData?: { platform: string } })
      .userAgentData;
    return uaData?.platform ?? navigator.platform ?? 'unknown';
  }

  buildIdeExtensionContext(extVersion: string): IdeExtensionContext {
    return {
      schema: IDE_EXTENSION_VERSION_SCHEMA_URL,
+8 −0
Original line number Diff line number Diff line
@@ -44,6 +44,13 @@ import { RepositoryClient } from './repository_client';
jest.mock('../code_suggestions/gitlab_platform_manager_for_code_suggestions');
jest.mock('../log'); // disable logging in tests
jest.mock('../feature_flags/local_feature_flag_service');
jest.mock('../snowplow/snowplow', () => ({
  Snowplow: {
    getInstance: jest
      .fn()
      .mockReturnValue({ trackStructEvent: jest.fn().mockResolvedValue(undefined) }),
  },
}));

jest.mock('../webview');

@@ -56,6 +63,7 @@ describe('LanguageClientWrapper', () => {

  const gitLabTelemetryEnvironment = createFakePartial<GitLabTelemetryEnvironment>({
    isTelemetryEnabled: jest.fn(),
    getOs: jest.fn().mockReturnValue('linux'),
  });

  let lsGitProvider: LSGitProvider;
+2 −1
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ export class LanguageClientWrapperImpl implements LanguageClientWrapper {

  #platformClientConfig?: Partial<ClientConfig>;

  #startupMonitor = new LanguageServerStartupMonitor();
  #startupMonitor: LanguageServerStartupMonitor;

  set startupMonitor(monitor: LanguageServerStartupMonitor) {
    this.#startupMonitor = monitor;
@@ -157,6 +157,7 @@ export class LanguageClientWrapperImpl implements LanguageClientWrapper {
    this.#documentQualityHandler = new DocumentQualityHandler();
    this.#repositoryClient = repositoryClient;
    this.#subscriptions.push(this.#documentQualityHandler);
    this.#startupMonitor = new LanguageServerStartupMonitor(telemetryEnvironment);
  }

  setCustomPlatformConfig(clientConfig: Partial<ClientConfig>): void {
Loading