Skip to content

Browser.at should never return null if implicit assertions are enabled #462

Description

@zyro23

expected behavior of Browser.at(Page) (quoting the docs):

If implicit assertions are enabled (which they are by default). This method will only ever return a page instance or throw an AssertionError

void method calls in an at-checker do not get ast transformed, i.e. no assert(...):
https://github.com/geb/geb/blob/v1.0/module/geb-implicit-assertions/src/main/groovy/geb/transform/implicitassertions/ImplicitAssertionsTransformationVisitor.groovy#L255

now, if a static at-checker has a void method call as last BinaryExpression, that is cast to boolean, returning false (the void method call does not get ast transformed):
https://github.com/geb/geb/blob/v1.0/module/geb-core/src/main/groovy/geb/Page.groovy#L228

that false is mapped to null and returned by Browser.doAt(Page):
https://github.com/geb/geb/blob/v1.0/module/geb-core/src/main/groovy/geb/Browser.groovy#L459

so we get no AssertionError, no Exception, just null. current Browser.page does not change.

n.b. possible workaround is a simple true as last statement in the static at-checker.

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions