Skip to content

Commit fcfe887

Browse files
feat(select): don't accept undefined as a value (#1202)
`page.select` accepting an `undefined` value is a legacy of when `page.select` took `...values`. This matches the way the method is documented in the API.
1 parent 4556513 commit fcfe887

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

src/frames.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -815,9 +815,9 @@ export class Frame {
815815
await handle.dispose();
816816
}
817817

818-
async select(selector: string, value: string | dom.ElementHandle | types.SelectOption | string[] | dom.ElementHandle[] | types.SelectOption[] | undefined, options?: types.WaitForOptions): Promise<string[]> {
818+
async select(selector: string, value: string | dom.ElementHandle | types.SelectOption | string[] | dom.ElementHandle[] | types.SelectOption[], options?: types.WaitForOptions): Promise<string[]> {
819819
const handle = await this._optionallyWaitForSelectorInUtilityContext(selector, options);
820-
const values = value === undefined ? [] : Array.isArray(value) ? value : [value];
820+
const values = Array.isArray(value) ? value : [value];
821821
const result = await handle.select(...values);
822822
await handle.dispose();
823823
return result;

src/page.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ export class Page extends platform.EventEmitter {
472472
return this.mainFrame().hover(selector, options);
473473
}
474474

475-
async select(selector: string, value: string | dom.ElementHandle | types.SelectOption | string[] | dom.ElementHandle[] | types.SelectOption[] | undefined, options?: types.WaitForOptions): Promise<string[]> {
475+
async select(selector: string, value: string | dom.ElementHandle | types.SelectOption | string[] | dom.ElementHandle[] | types.SelectOption[], options?: types.WaitForOptions): Promise<string[]> {
476476
return this.mainFrame().select(selector, value, options);
477477
}
478478

test/page.spec.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -886,20 +886,20 @@ module.exports.describe = function({testRunner, expect, headless, playwright, FF
886886
});
887887
it('should return [] on no values',async({page, server}) => {
888888
await page.goto(server.PREFIX + '/input/select.html');
889-
const result = await page.select('select');
889+
const result = await page.select('select', []);
890890
expect(result).toEqual([]);
891891
});
892892
it('should deselect all options when passed no values for a multiple select',async({page, server}) => {
893893
await page.goto(server.PREFIX + '/input/select.html');
894894
await page.evaluate(() => makeMultiple());
895895
await page.select('select', ['blue','black','magenta']);
896-
await page.select('select');
896+
await page.select('select', []);
897897
expect(await page.$eval('select', select => Array.from(select.options).every(option => !option.selected))).toEqual(true);
898898
});
899899
it('should deselect all options when passed no values for a select without multiple',async({page, server}) => {
900900
await page.goto(server.PREFIX + '/input/select.html');
901901
await page.select('select', ['blue','black','magenta']);
902-
await page.select('select');
902+
await page.select('select', []);
903903
expect(await page.$eval('select', select => Array.from(select.options).every(option => !option.selected))).toEqual(true);
904904
});
905905
it('should throw if passed wrong types', async({page, server}) => {

0 commit comments

Comments
 (0)