Change:
const completionList = await completionPromise; if (!completionList || !completionList.items || !completionList.items.length) { <del> return Promise.resolve(); } expectedItems.forEach(eItem => { const matches = completionList.items.filter(i => i.label === eItem.label); const match = matches && matches.length > 0 ? matches[0] : undefined; assert.ok(match, `Didn't find completion item with label ${eItem.label}`); if (match) { assert.strictEqual(match.detail, 'Emmet Abbreviation', `Match needs to come from Emmet`); if (eItem.documentation) { assert.strictEqual(match.documentation, eItem.documentation, `Emmet completion Documentation doesn't match`); } </del> <ins> if (completionList === undefined) { assert.strictEqual(expectedItems, completionList); </ins> } <del> }); return Promise.resolve(); }); } function testCssCompletionProvider(contents: string, expectedItems: TestCompletionItem[]): Thenable<any> { const cursorPos = contents.indexOf('|'); const cssContents = contents.slice(0, cursorPos) + contents.slice(cursorPos + 1); return withRandomFileEditor(cssContents, 'css', async (editor, _doc) => { const selection = new Selection(editor.document.positionAt(cursorPos), editor.document.positionAt(cursorPos)); editor.selection = selection; const cancelSrc = new CancellationTokenSource(); const completionPromise = completionProvider.provideCompletionItems( editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke, triggerCharacter: undefined } ); if (!completionPromise) { return Promise.resolve(); } const completionList = await completionPromise; if (!completionList || !completionList.items || !completionList.items.length) { </del> return Promise.resolve(); } <del> expectedItems.forEach(eItem => { </del> <ins> assert.strictEqual(expectedItems === undefined, false); expectedItems!.forEach(eItem => { </ins> const matches = completionList.items.filter(i => i.label === eItem.label); const match = matches && matches.length > 0 ? matches[0] : undefined; assert.ok(match, `Didn't find completion item with label ${eItem.label}`);

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes (disabling Emmet) <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: - 1.62.3 OS Version: - Ubuntu 21.10 Steps to Reproduce: a .js file which is denoted a React file by VSCode part of the coding implement state for a counter with the following simple line: getting as far as typing I wish to just exit the square brackets however Emmet takes the first position tab results in an HTML string appearing, see pictures Question: How do I move Emmet down the list of suggestions in Autocomplete for a React file, I am using other extensions like TabOut (to get out of the square brackets without any autocomplete) which would be more appropriate. ! ! ! !
This issue heavily affect the react users.
Verification steps: a JSX file. . should not be an Emmet suggestion.
/verified