mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-28 13:13:37 +08:00
This adds an option `--enable-unstable-features`, which now also turns on multimodal support for Freestyler. It also adds `--enable-features` and `--disable-features`, to allow more fine-grained control over the exact feature set when necessary. Fixed: 406941932 Change-Id: I7fcecbba833a2e0a66166890aa5af218ae2a8f7e Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6404318 Reviewed-by: Nikolay Vitkov <nvitkov@chromium.org>
113 lines
3.6 KiB
JavaScript
113 lines
3.6 KiB
JavaScript
// Copyright 2025 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.
|
|
|
|
// Run these tests with:
|
|
//
|
|
// npx mocha scripts/devtools_build.test.mjs
|
|
|
|
import {assert} from 'chai';
|
|
|
|
import {FeatureSet} from './devtools_build.mjs';
|
|
|
|
describe('FeatureSet', () => {
|
|
it('yields an empty set of arguments by default', () => {
|
|
const featureSet = new FeatureSet();
|
|
|
|
assert.isEmpty([...featureSet]);
|
|
});
|
|
|
|
it('can enable features', () => {
|
|
const featureSet = new FeatureSet();
|
|
|
|
featureSet.enable('DevToolsFreestyler');
|
|
featureSet.enable('DevToolsWellKnown');
|
|
|
|
assert.deepEqual([...featureSet], [
|
|
'--enable-features=DevToolsFreestyler,DevToolsWellKnown',
|
|
]);
|
|
});
|
|
|
|
it('can enable features with parameters', () => {
|
|
const featureSet = new FeatureSet();
|
|
|
|
featureSet.enable('DevToolsFreestyler', {patching: true});
|
|
featureSet.enable('DevToolsFreestyler', {user_tier: 'TESTERS', multimodal: true});
|
|
featureSet.enable('DevToolsAiAssistancePerformanceAgent', {insights_enabled: true});
|
|
|
|
assert.deepEqual([...featureSet], [
|
|
'--enable-features=DevToolsAiAssistancePerformanceAgent:insights_enabled/true,DevToolsFreestyler:multimodal/true/patching/true/user_tier/TESTERS',
|
|
]);
|
|
});
|
|
|
|
it('can disable features', () => {
|
|
const featureSet = new FeatureSet();
|
|
|
|
featureSet.disable('MediaRouter');
|
|
featureSet.disable('DevToolsAiGeneratedTimelineLabels');
|
|
|
|
assert.deepEqual([...featureSet], [
|
|
'--disable-features=DevToolsAiGeneratedTimelineLabels,MediaRouter',
|
|
]);
|
|
});
|
|
|
|
it('can disable and enable unrelated features', () => {
|
|
const featureSet = new FeatureSet();
|
|
|
|
featureSet.disable('MediaRouter');
|
|
featureSet.enable('DevToolsAutomaticFileSystems');
|
|
|
|
assert.deepEqual([...featureSet], [
|
|
'--disable-features=MediaRouter',
|
|
'--enable-features=DevToolsAutomaticFileSystems',
|
|
]);
|
|
});
|
|
|
|
it('can disable previously enabled features', () => {
|
|
const featureSet = new FeatureSet();
|
|
|
|
featureSet.enable('DevToolsFreestyler', {patching: true});
|
|
featureSet.enable('DevToolsWellKnown');
|
|
featureSet.disable('DevToolsFreestyler');
|
|
|
|
assert.deepEqual([...featureSet], [
|
|
'--disable-features=DevToolsFreestyler',
|
|
'--enable-features=DevToolsWellKnown',
|
|
]);
|
|
});
|
|
|
|
it('can merge feature sets', () => {
|
|
const fs1 = new FeatureSet();
|
|
fs1.enable('DevToolsFreestyler', {patching: true});
|
|
fs1.enable('DevToolsWellKnown');
|
|
fs1.disable('MediaRouter');
|
|
const fs2 = new FeatureSet();
|
|
fs2.disable('DevToolsWellKnown');
|
|
fs2.enable('DevToolsFreestyler', {multimodal: true});
|
|
|
|
fs1.merge(fs2);
|
|
|
|
assert.deepEqual([...fs1], [
|
|
'--disable-features=DevToolsWellKnown,MediaRouter',
|
|
'--enable-features=DevToolsFreestyler:multimodal/true/patching/true',
|
|
]);
|
|
assert.deepEqual([...fs2], [
|
|
'--disable-features=DevToolsWellKnown',
|
|
'--enable-features=DevToolsFreestyler:multimodal/true',
|
|
]);
|
|
});
|
|
|
|
it('can parse --enable-features/--disable-features declarations', () => {
|
|
assert.deepEqual(FeatureSet.parse('MediaRouter'), [
|
|
{feature: 'MediaRouter', parameters: {}},
|
|
]);
|
|
assert.deepEqual(FeatureSet.parse('DevToolsFreestyler:multimodal/true/patching/true'), [
|
|
{feature: 'DevToolsFreestyler', parameters: {multimodal: 'true', patching: 'true'}},
|
|
]);
|
|
assert.deepEqual(FeatureSet.parse('DevToolsFreestyler:multimodal/true,DevToolsWellKnown'), [
|
|
{feature: 'DevToolsFreestyler', parameters: {multimodal: 'true'}},
|
|
{feature: 'DevToolsWellKnown', parameters: {}},
|
|
]);
|
|
});
|
|
});
|