Skip to content

Commit 2a29834

Browse files
vrubezhnyclaude
andcommitted
Add diagnostic logging to componentCommands test
- Add suite-level timeout of 30s - Add logging to show expected vs actual commands - Use waitForItemStable for more reliable component detection - Temporary commit for debugging CI test failures Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent f2c245a commit 2a29834

3 files changed

Lines changed: 27 additions & 8 deletions

File tree

src/devfile/parallelCompositeCommand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
* Licensed under the MIT License. See LICENSE file in the project root for license information.
44
*-----------------------------------------------------------------------------------------------*/
55

6-
import { ComponentWorkspaceFolder } from 'src/odo/workspace';
76
import { Command } from '../odo/componentTypeDescription';
7+
import { ComponentWorkspaceFolder } from '../odo/workspace';
88
import { DevfileCommandRunner } from './devfileCommandRunner';
99

1010
export class ParallelCompositeCommand {

test/integration/command.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ import { EventEmitter, Terminal, window, workspace } from 'vscode';
1515
import { parse, stringify } from 'yaml';
1616
import { CommandText } from '../../src/base/command';
1717
import { CliChannel } from '../../src/cli';
18+
import { DevfileCommandRunner } from '../../src/devfile/devfileCommandRunner';
1819
import { Oc } from '../../src/oc/ocWrapper';
1920
import { Command } from '../../src/odo/command';
2021
import { OdoPreference } from '../../src/odo/odoPreference';
2122
import { Odo } from '../../src/odo/odoWrapper';
23+
import { ComponentWorkspaceFolder } from '../../src/odo/workspace';
2224
import { LoginUtil } from '../../src/util/loginUtil';
2325
import { YAML_STRINGIFY_OPTIONS } from '../../src/util/utils';
24-
import { ComponentWorkspaceFolder } from 'src/odo/workspace';
25-
import { DevfileCommandRunner } from '../../src/devfile/devfileCommandRunner';
2626

2727
const ODO = Odo.Instance;
2828

test/ui/suite/componentCommands.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@ import {
1717
Workbench,
1818
} from 'vscode-extension-tester';
1919
import { parse } from 'yaml';
20-
import { itemExists } from '../common/conditions';
20+
import { log, waitForItemStable, warn } from '../common/conditions';
2121
import { VIEWS } from '../common/constants';
2222
import { reloadWindow } from '../common/overdrives';
2323
import { OpenshiftTerminalWebviewView } from '../common/ui/webviewView/openshiftTerminalWebviewView';
2424

2525
export function testComponentCommands(path: string) {
2626
describe('Component Commands', function () {
27+
this.timeout(30_000);
28+
2729
let view: SideBarView;
28-
let section: ViewSection;
2930
let commands: TreeItem[];
3031

3132
const componentName = 'nodejs-starter';
@@ -46,10 +47,15 @@ export function testComponentCommands(path: string) {
4647
}
4748

4849
// expect component is running
49-
section = await view.getContent().getSection(VIEWS.components);
5050
try {
51-
await itemExists(`${componentName} (dev running)`, section);
52-
} catch {
51+
const componentInDevName = `${componentName} (dev running)`;
52+
const item = await waitForItemStable(getSection, componentInDevName, true, 40_000);
53+
if (!item) {
54+
warn(`Component "${componentName}" not found or isn't running in Dev, skipping tests`);
55+
this.skip();
56+
}
57+
} catch (err) {
58+
warn('Error in before hook: "Component Commands":', err);
5359
this.skip();
5460
}
5561
});
@@ -69,8 +75,16 @@ export function testComponentCommands(path: string) {
6975
expectedCommands.push(command.id);
7076
});
7177

78+
log(`Expected commands: ${JSON.stringify(expectedCommands)}`);
79+
7280
//get component
81+
const section = await getSection();
82+
expect(section).to.exist;
83+
7384
const components = await section.getVisibleItems();
85+
expect(components).to.exist;
86+
expect(components).to.have.length.greaterThan(0);
87+
7488
const component = components[0] as TreeItem;
7589
await component.expand();
7690

@@ -84,6 +98,7 @@ export function testComponentCommands(path: string) {
8498
for (const command of commands) {
8599
actualCommands.push(await command.getLabel());
86100
}
101+
log(`Actual commands: ${JSON.stringify(actualCommands)}`);
87102
expect(actualCommands).to.include.members(expectedCommands);
88103
});
89104

@@ -117,5 +132,9 @@ export function testComponentCommands(path: string) {
117132

118133
expect(terminalText).to.contain('Press any key to close this terminal');
119134
});
135+
136+
async function getSection(): Promise<ViewSection> {
137+
return await view.getContent().getSection(VIEWS.components);
138+
}
120139
});
121140
}

0 commit comments

Comments
 (0)