@bigtest/interactor
Advanced tools
Comparing version 0.30.0 to 0.31.0
# @bigtest/interactor | ||
## 0.31.0 | ||
### Minor Changes | ||
- 7089b975: Override filters appearing in lookup to the assertion filters (fix [#966](https://github.com/thefrontside/bigtest/issues/966)) | ||
## 0.30.0 | ||
@@ -4,0 +10,0 @@ |
@@ -97,2 +97,20 @@ "use strict"; | ||
} | ||
/** | ||
* Removes any default values for a filter from the lookup if that filter is present in the | ||
* assertion. Otherwise, it is not possible to make an assertion on a filter that might conflict | ||
* see https://github.com/thefrontside/bigtest/issues/966 | ||
*/ | ||
function getLookupFilterForAssertion(filter, filters) { | ||
let lookupFilter = new filter_1.Filter(filter.specification, Object.assign({}, filter.filters)); | ||
let specFilters = lookupFilter.specification.filters; | ||
for (let key in specFilters) { | ||
if (typeof specFilters[key] !== 'function' | ||
&& 'default' in specFilters[key] | ||
&& key in filters | ||
&& !(key in lookupFilter.filters)) { | ||
lookupFilter.filters[key] = filters[key]; | ||
} | ||
} | ||
return lookupFilter; | ||
} | ||
function unsafeSyncResolveParent(options) { | ||
@@ -134,3 +152,3 @@ return options.ancestors.reduce(resolveUnique, globals_1.bigtestGlobals.document.documentElement); | ||
return converge_1.converge(() => { | ||
let element = resolver(options); | ||
let element = resolver({ ...options, filter: getLookupFilterForAssertion(options.filter, filters) }); | ||
let match = new match_1.MatchFilter(element, filter); | ||
@@ -137,0 +155,0 @@ if (!match.matches) { |
@@ -90,2 +90,20 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ | ||
} | ||
/** | ||
* Removes any default values for a filter from the lookup if that filter is present in the | ||
* assertion. Otherwise, it is not possible to make an assertion on a filter that might conflict | ||
* see https://github.com/thefrontside/bigtest/issues/966 | ||
*/ | ||
function getLookupFilterForAssertion(filter, filters) { | ||
let lookupFilter = new Filter(filter.specification, Object.assign({}, filter.filters)); | ||
let specFilters = lookupFilter.specification.filters; | ||
for (let key in specFilters) { | ||
if (typeof specFilters[key] !== 'function' | ||
&& 'default' in specFilters[key] | ||
&& key in filters | ||
&& !(key in lookupFilter.filters)) { | ||
lookupFilter.filters[key] = filters[key]; | ||
} | ||
} | ||
return lookupFilter; | ||
} | ||
export function unsafeSyncResolveParent(options) { | ||
@@ -125,3 +143,3 @@ return options.ancestors.reduce(resolveUnique, bigtestGlobals.document.documentElement); | ||
return converge(() => { | ||
let element = resolver(options); | ||
let element = resolver({ ...options, filter: getLookupFilterForAssertion(options.filter, filters) }); | ||
let match = new MatchFilter(element, filter); | ||
@@ -128,0 +146,0 @@ if (!match.matches) { |
{ | ||
"name": "@bigtest/interactor", | ||
"version": "0.30.0", | ||
"version": "0.31.0", | ||
"description": "Interactors for working with applications", | ||
@@ -5,0 +5,0 @@ "main": "dist/cjs/index.js", |
@@ -111,2 +111,21 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ | ||
/** | ||
* Removes any default values for a filter from the lookup if that filter is present in the | ||
* assertion. Otherwise, it is not possible to make an assertion on a filter that might conflict | ||
* see https://github.com/thefrontside/bigtest/issues/966 | ||
*/ | ||
function getLookupFilterForAssertion<E extends Element, F extends Filters<E>>(filter: Filter<E, F>, filters: FilterParams<E, F>): Filter<E, F> { | ||
let lookupFilter = new Filter(filter.specification, Object.assign({}, filter.filters)); | ||
let specFilters = lookupFilter.specification.filters; | ||
for (let key in specFilters) { | ||
if (typeof specFilters[key] !== 'function' | ||
&& 'default' in specFilters[key] | ||
&& key in filters | ||
&& !(key in lookupFilter.filters)) { | ||
lookupFilter.filters[key] = filters[key]; | ||
} | ||
} | ||
return lookupFilter; | ||
} | ||
export function unsafeSyncResolveParent(options: InteractorOptions<any, any, any>): Element { | ||
@@ -156,3 +175,3 @@ return options.ancestors.reduce(resolveUnique, bigtestGlobals.document.documentElement); | ||
return converge(() => { | ||
let element = resolver(options); | ||
let element = resolver({...options, filter: getLookupFilterForAssertion(options.filter, filters) }); | ||
let match = new MatchFilter(element, filter); | ||
@@ -159,0 +178,0 @@ if(!match.matches) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
750170
6098