chore: allow opt out from watch (#21471)

This commit is contained in:
Pavel Feldman 2023-03-07 15:07:52 -08:00 committed by GitHub
parent e9f94f0346
commit de0b66c888
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 9 deletions

View file

@ -21,12 +21,6 @@ test.describe('New Todo', () => {
// create a new todo locator // create a new todo locator
const newTodo = page.getByPlaceholder('What needs to be done?'); const newTodo = page.getByPlaceholder('What needs to be done?');
// Create 1st todo. // Create 1st todo.
expect.soft(1).toBe(2);
expect.soft(1).toBe(2);
expect.soft(1).toBe(2);
expect.soft(1).toBe(2);
expect.soft(1).toBe(2);
expect.soft(1).toBe(2);
await newTodo.fill(TODO_ITEMS[0]); await newTodo.fill(TODO_ITEMS[0]);
await newTodo.press('Enter'); await newTodo.press('Enter');

View file

@ -52,6 +52,7 @@ export const WatchModeView: React.FC<{}> = ({
const [progress, setProgress] = React.useState<Progress>({ total: 0, passed: 0, failed: 0 }); const [progress, setProgress] = React.useState<Progress>({ total: 0, passed: 0, failed: 0 });
const [selectedTestItem, setSelectedTestItem] = React.useState<TestItem | undefined>(undefined); const [selectedTestItem, setSelectedTestItem] = React.useState<TestItem | undefined>(undefined);
const [settingsVisible, setSettingsVisible] = React.useState<boolean>(false); const [settingsVisible, setSettingsVisible] = React.useState<boolean>(false);
const [isWatchingFiles, setIsWatchingFiles] = React.useState<boolean>(true);
updateRootSuite = (rootSuite: Suite, { passed, failed }: Progress) => { updateRootSuite = (rootSuite: Suite, { passed, failed }: Progress) => {
setRootSuite({ value: rootSuite }); setRootSuite({ value: rootSuite });
@ -82,6 +83,7 @@ export const WatchModeView: React.FC<{}> = ({
<ToolbarButton icon='play' title='Run' onClick={runVisibleTests} disabled={isRunningTest}></ToolbarButton> <ToolbarButton icon='play' title='Run' onClick={runVisibleTests} disabled={isRunningTest}></ToolbarButton>
<ToolbarButton icon='debug-stop' title='Stop' onClick={() => sendMessageNoReply('stop')} disabled={!isRunningTest}></ToolbarButton> <ToolbarButton icon='debug-stop' title='Stop' onClick={() => sendMessageNoReply('stop')} disabled={!isRunningTest}></ToolbarButton>
<ToolbarButton icon='refresh' title='Reload' onClick={resetCollectingRootSuite} disabled={isRunningTest}></ToolbarButton> <ToolbarButton icon='refresh' title='Reload' onClick={resetCollectingRootSuite} disabled={isRunningTest}></ToolbarButton>
<ToolbarButton icon='eye-watch' title='Watch' toggled={isWatchingFiles} onClick={() => setIsWatchingFiles(!isWatchingFiles)}></ToolbarButton>
<div className='spacer'></div> <div className='spacer'></div>
<ToolbarButton icon='gear' title='Toggle color mode' toggled={settingsVisible} onClick={() => { setSettingsVisible(!settingsVisible); }}></ToolbarButton> <ToolbarButton icon='gear' title='Toggle color mode' toggled={settingsVisible} onClick={() => { setSettingsVisible(!settingsVisible); }}></ToolbarButton>
</Toolbar> </Toolbar>
@ -89,6 +91,7 @@ export const WatchModeView: React.FC<{}> = ({
projectNames={projectNames} projectNames={projectNames}
rootSuite={rootSuite} rootSuite={rootSuite}
isRunningTest={isRunningTest} isRunningTest={isRunningTest}
isWatchingFiles={isWatchingFiles}
runTests={runTests} runTests={runTests}
onTestItemSelected={setSelectedTestItem} />} onTestItemSelected={setSelectedTestItem} />}
{settingsVisible && <SettingsView projectNames={projectNames} setProjectNames={setProjectNames} onClose={() => setSettingsVisible(false)}></SettingsView>} {settingsVisible && <SettingsView projectNames={projectNames} setProjectNames={setProjectNames} onClose={() => setSettingsVisible(false)}></SettingsView>}
@ -105,8 +108,9 @@ export const TestList: React.FC<{
rootSuite: { value: Suite | undefined }, rootSuite: { value: Suite | undefined },
runTests: (testIds: string[]) => void, runTests: (testIds: string[]) => void,
isRunningTest: boolean, isRunningTest: boolean,
isWatchingFiles: boolean,
onTestItemSelected: (test: TestItem | undefined) => void, onTestItemSelected: (test: TestItem | undefined) => void,
}> = ({ projectNames, rootSuite, runTests, isRunningTest, onTestItemSelected }) => { }> = ({ projectNames, rootSuite, runTests, isRunningTest, isWatchingFiles, onTestItemSelected }) => {
const [filterText, setFilterText] = React.useState<string>(''); const [filterText, setFilterText] = React.useState<string>('');
const [selectedTreeItemId, setSelectedTreeItemId] = React.useState<string | undefined>(); const [selectedTreeItemId, setSelectedTreeItemId] = React.useState<string | undefined>();
const [expandedItems, setExpandedItems] = React.useState<Map<string, boolean>>(new Map()); const [expandedItems, setExpandedItems] = React.useState<Map<string, boolean>>(new Map());
@ -147,10 +151,13 @@ export const TestList: React.FC<{
selectedTestItem = selectedTreeItem; selectedTestItem = selectedTreeItem;
else if (selectedTreeItem?.kind === 'case' && selectedTreeItem.children?.length === 1) else if (selectedTreeItem?.kind === 'case' && selectedTreeItem.children?.length === 1)
selectedTestItem = selectedTreeItem.children[0]! as TestItem; selectedTestItem = selectedTreeItem.children[0]! as TestItem;
sendMessageNoReply('watch', { fileName: fileName(selectedTestItem) });
return { selectedTreeItem, selectedTestItem }; return { selectedTreeItem, selectedTestItem };
}, [selectedTreeItemId, treeItemMap]); }, [selectedTreeItemId, treeItemMap]);
React.useEffect(() => {
sendMessageNoReply('watch', { fileName: isWatchingFiles ? fileName(selectedTestItem) : undefined });
}, [selectedTestItem, isWatchingFiles]);
onTestItemSelected(selectedTestItem); onTestItemSelected(selectedTestItem);
const runTreeItem = (treeItem: TreeItem) => { const runTreeItem = (treeItem: TreeItem) => {

View file

@ -48,6 +48,10 @@
outline: 1px solid var(--vscode-focusBorder); outline: 1px solid var(--vscode-focusBorder);
} }
.list-view-content .list-view-entry.selected {
background-color: var(--vscode-list-inactiveSelectionBackground);
}
.list-view-content:focus .list-view-entry.selected * { .list-view-content:focus .list-view-entry.selected * {
color: var(--vscode-list-activeSelectionForeground) !important; color: var(--vscode-list-activeSelectionForeground) !important;
} }

View file

@ -23,7 +23,6 @@
align-items: center; align-items: center;
flex: none; flex: none;
z-index: 2; z-index: 2;
margin: 0 5px;
} }
.toolbar-linewrap { .toolbar-linewrap {