UNPKG

chrome-devtools-frontend

Version:
93 lines (76 loc) 3.5 kB
// Copyright 2024 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import * as Common from '../../core/common/common.js'; import * as Platform from '../../core/platform/platform.js'; import * as Root from '../../core/root/root.js'; import { deinitializeGlobalVars, initializeGlobalVars, } from '../../testing/EnvironmentHelpers.js'; import * as UI from '../../ui/legacy/legacy.js'; import type * as WhatsNewModule from './whats_new.js'; const {urlString} = Platform.DevToolsPath; describe('Release Note', () => { // eslint-disable-next-line @typescript-eslint/naming-convention let WhatsNew: typeof WhatsNewModule; before(async () => { await initializeGlobalVars(); WhatsNew = await import('./whats_new.js'); WhatsNew.ReleaseNoteText.setReleaseNoteForTest( { version: 99, header: 'Highlights from Chrome 100 update', markdownLinks: [], link: urlString`https://developers.google.com/web/tools/chrome-devtools/`, videoLinks: [], }, ); // We need to add the What's New view so that an error is not thrown when requesting // to show the release notes when needed. UI.ViewManager.registerViewExtension({ location: UI.ViewManager.ViewLocationValues.DRAWER_VIEW, id: 'release-note', title: () => 'What\'s New' as Platform.UIString.LocalizedString, commandPrompt: () => 'Show What\'s New' as Platform.UIString.LocalizedString, persistence: UI.ViewManager.ViewPersistence.CLOSEABLE, order: 1, async loadView() { return new WhatsNew.ReleaseNoteView.ReleaseNoteView(); }, }); // This setting is used to determine if the What's New panel needs to be shown. Common.Settings.registerSettingsForTest([{ category: Common.Settings.SettingCategory.APPEARANCE, title: () => 'Show What\'s New after each update' as Platform.UIString.LocalizedString, settingName: 'help.show-release-note', settingType: Common.Settings.SettingType.BOOLEAN, defaultValue: true, }]); Root.Runtime.experiments.clearForTest(); await initializeGlobalVars({reset: false}); }); after(async () => await deinitializeGlobalVars()); it('sets and gets the last seen release note version correctly', () => { const releaseNoteVersionSetting = WhatsNew.WhatsNew.getReleaseNoteVersionSetting(); assert.strictEqual(releaseNoteVersionSetting.get(), 0); releaseNoteVersionSetting.set(1); assert.strictEqual(releaseNoteVersionSetting.get(), 1); }); it('updates the last seen version when the release notes are shown', () => { assert.strictEqual(WhatsNew.WhatsNew.getReleaseNoteVersionSetting().get(), 1); WhatsNew.WhatsNew.showReleaseNoteIfNeeded(); assert.strictEqual(WhatsNew.WhatsNew.getReleaseNoteVersionSetting().get(), 99); }); it('shows the release notes only when needed', () => { const lastSeenVersionSetting = WhatsNew.WhatsNew.getReleaseNoteVersionSetting(); lastSeenVersionSetting.set(98); assert.isTrue(WhatsNew.WhatsNew.showReleaseNoteIfNeeded()); lastSeenVersionSetting.set(99); assert.isFalse(WhatsNew.WhatsNew.showReleaseNoteIfNeeded()); lastSeenVersionSetting.set(0); assert.isFalse(WhatsNew.WhatsNew.showReleaseNoteIfNeeded()); lastSeenVersionSetting.set(100); assert.isFalse(WhatsNew.WhatsNew.showReleaseNoteIfNeeded()); }); });