MCPcopy
hub / github.com/codeceptjs/CodeceptJS / selectOption

Method selectOption

lib/helper/Puppeteer.js:1688–1721  ·  view source on GitHub ↗

* {{> selectOption }}

(select, option, context = null)

Source from the content-addressed store, hash-verified

1686 * {{> selectOption }}
1687 */
1688 async selectOption(select, option, context = null) {
1689 const pageContext = await this._getContext()
1690 const matchedLocator = new Locator(select)
1691
1692 let contextEl
1693 if (context) {
1694 const contextEls = await findElements.call(this, pageContext, context)
1695 assertElementExists(contextEls, context, 'Context element')
1696 contextEl = contextEls[0]
1697 }
1698
1699 // Strict locator
1700 if (!matchedLocator.isFuzzy()) {
1701 this.debugSection('SelectOption', `Strict: ${JSON.stringify(select)}`)
1702 const els = contextEl ? await findElements.call(this, contextEl, select) : await this._locate(select)
1703 assertElementExists(els, select, 'Selectable element')
1704 return proceedSelect.call(this, pageContext, selectElement(els, select, this), option)
1705 }
1706
1707 // Fuzzy: try combobox
1708 this.debugSection('SelectOption', `Fuzzy: "${matchedLocator.value}"`)
1709 const comboboxSearchCtx = contextEl || pageContext
1710 let els = await findByRole(comboboxSearchCtx, { role: 'combobox', name: matchedLocator.value })
1711 if (els?.length) return proceedSelect.call(this, pageContext, selectElement(els, select, this), option)
1712
1713 // Fuzzy: try listbox
1714 els = await findByRole(comboboxSearchCtx, { role: 'listbox', name: matchedLocator.value })
1715 if (els?.length) return proceedSelect.call(this, pageContext, selectElement(els, select, this), option)
1716
1717 // Fuzzy: try native select
1718 const visibleEls = await findVisibleFields.call(this, select, context)
1719 assertElementExists(visibleEls, select, 'Selectable field')
1720 return proceedSelect.call(this, pageContext, selectElement(visibleEls, select, this), option)
1721 }
1722
1723 /**
1724 * {{> grabNumberOfVisibleElements }}

Callers

nothing calls this directly

Calls 6

_getContextMethod · 0.95
isFuzzyMethod · 0.95
_locateMethod · 0.95
selectElementFunction · 0.90
assertElementExistsFunction · 0.70
findByRoleFunction · 0.70

Tested by

no test coverage detected