-
Notifications
You must be signed in to change notification settings - Fork 73
Input
There are two types of input boxes in VS Code: 'quick input' and 'quick open'. They can both be made to look the same, have nearly the same functionality, but different DOM. Hence each is handled by a different page object. Make sure you look for the correct type, otherwise you will likely receive a lookup error.
Another caveat of an input box in VS Code is that unless it has already been opened, the underlying DOM element does not exist. This may result in lookup errors when using the constructor to search for input boxes. Instead, we recommend using the static create
method that will safely wait for the element to appear.
This is the page object for the plain and simple input box you either put some text into, or just pick from the quick pick selection.
There are no methods that explicitly open and return a handle to an input box. So first make sure it is opened before you try to handle it.
import { InputBox } from 'vscode-extension-tester';
...
// safe way to find an inputbox
const input = InputBox.create();
// only use when manually waiting for the element, or when inputbox has already been opened
const input = new InputBox();
The only difference in the GUI to quick open box is the option to display a message underneath a quick input box. To get it, use:
const message = await input.getMessage();
As of VS Code 1.44.0, QuickOpenBox is no longer in use. InputBox is used exclusively.
Analogically to quick input, this is the page object handling quick open box. This type of input is usually used to (apart from other functions) open files or folders. The command prompt is also built on this element.
import { QuickOpenBox } from 'vscode-extension-tester';
...
// safe way to find a quickopenbox
const input = QuickOpenBox.create();
// only use when manually waiting for the element, or when quickopenbox has already been opened
const input = new QuickOpenBox();
// get text in the input box
const text = await input.getText();
// replace text in the input box with a string
await input.setText('amazing text');
// get the placeholder text
const placeholder = await input.getPlaceHolder();
// confirm (press enter in the input)
await input.confirm();
// cancel (press escape in the input)
await input.cancel();
// get quick pick options
const picks = await input.getQuickPicks();
// select a quick pick item by text or index
await input.selectQuickPick(1);
await input.selectQuickPick('Input.d.ts');
// find if there is an active progress bar
const hasProgress = await input.hasProgress();
Page objects retrieved when calling getQuickPick
const picks = await input.getQuickPicks();
const pick = picks[0];
// get text
const text = await pick.getText();
// get index
const index = pick.getIndex();
// select (click) the item (recommend to use input.selectQuickPick() if possible)
await pick.select();