I have a Module with content defined for each element on the webpage I am working with:
package com.abc.modules
import geb.Module
class Member extends Module {
static content = {
// Member fields
mbrID {$("div.subject-details div.memberDetails input.projMbrId")}
mbrName {$("input.projMbrName")}
mbrRegion {$("select.projMbrReg")}
mbrAdd1 {$("input.projMbrAdd1")}
mbrAdd2 {$("input.projMbrAdd2")}
mbrAdd3 {$("input.projMbrAdd3")}
mbrCity {$("input.projMbrCity")}
mbrState {$("select.projMbrState")}
mbrZip {$("input.projMbrZip")}
mbrHomePhone {$("input.projMbrHomePhone")}
mbrHomePhoneExt {$("input.projMbrHomePhoneExt")}
mbrWrkPhone {$("input.projMbrWorkPhone")}
mbrWrkPhoneExt {$("input.projMbrWorkPhoneExt")}
mbrEmail {$("input.projMbrPersonalEMail")}
mbrWrkEmail {$("input.projMbrWorkEMail")}
}
}
In my test spec I am asserting that each element contained in my module is present, but the only way I know how to do it is by asserting each element individually:
package cmdr.ProjectCover
import com.gdit.qa.fwa.geb.cmdr.pages.HomePage
import com.gdit.qa.fwa.geb.cmdr.pages.ProjectCover
import geb.spock.GebReportingSpec
class VerifyMemberFields extends GebReportingSpec {
def setupSpec() {
// Log in to app
via HomePage
loginPage.signIn("marco", "abc123")
// Navigate to Member Page
memberPageButton.click()
}
def "Verify Member fields exist"() {
when: "User selects Member option for subject type"
at ProjectCover
projSubject.click()
projCoverMbrFields.projSubjectMbrOption.click()
then: "All expected member fields are displayed in the left panel"
assert projCoverMbrFields.mbrID.present
assert projCoverMbrFields.mbrName.present
assert projCoverMbrFields.mbrRegion.present
assert projCoverMbrFields.mbrAdd1.present
assert projCoverMbrFields.mbrAdd2.present
assert projCoverMbrFields.mbrAdd3.present
assert projCoverMbrFields.mbrCity.present
assert projCoverMbrFields.mbrState.present
assert projCoverMbrFields.mbrZip.present
assert projCoverMbrFields.mbrHomePhone.present
assert projCoverMbrFields.mbrHomePhoneExt.present
assert projCoverMbrFields.mbrWrkPhone.present
assert projCoverMbrFields.mbrWrkPhoneExt.present
assert projCoverMbrFields.mbrEmail.present
assert projCoverMbrFields.mbrWrkEmail.present
}
I am wondering if there is a way for me to (instead of asserting each element of my module individually) assert the entire content of the module at once so that my feature method then block conditions can be reduced.