Groovy: SoapUI: SoapUiSelenium.groovy

package com.gemalto.mcx.groovy

import org.openqa.selenium.By
import org.openqa.selenium.WebDriver

import org.openqa.selenium.WebElement
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.firefox.FirefoxProfile
import org.openqa.selenium.support.ui.ExpectedCondition
import org.openqa.selenium.support.ui.WebDriverWait
import org.openqa.selenium.Dimension
import org.openqa.selenium.Point

//For ScreenCap
import java.io.File
import org.apache.commons.io.FileUtils
import org.openqa.selenium.TakesScreenshot
import org.openqa.selenium.OutputType
import java.util.concurrent.TimeUnit

class SoapUiSelenium {

    /*
     *  Calls to this CLASS MUST pass the *log* and *testRunner* objects
     *   log: used for sending log info to SoapUI
     *   testRunner: provides hooks for Test Case/Suite/Project/Environment Properties
     *     along with anything that is accessible by using the 'Groovy Script' Test Step
     *     directly within SoapUI
     */     
    def log
    def testRunner
    def UrlMfsAdminApp
    def UrlQrCodeGen
    def pathScreenShot
    WebDriver testBrowser
    WebElement element

    /*
     * Constructor:
     * For internal calls
     */    
    def SoapUiSelenium(){
        //
                // Create a new Firefox Profile to allow camera access
        FirefoxProfile profile = new FirefoxProfile()
        profile.setPreference("media.navigator.permission.disabled", true)
        // Create a new instance of the Firefox driver
        testBrowser = new FirefoxDriver(profile)
        // Set Window position and size
        testBrowser.manage().window().setPosition(new Point(20,20))
        testBrowser.manage().window().setSize(new Dimension(750,500))
    }

    /*
     * Constructor:
     * Takes SoapUi LOG and testRunner objects to enable SoapUi hooks
     */
    def SoapUiSelenium(log, testRunner){
        this.log = log
        this.testRunner = testRunner
//      def UrlMfsAdminApp = "https://127.0.0.1:18202" //VAL1
//      def UrlMfsAdminApp = "https://127.0.0.1:18201" //LAB1
        log.info "Fetching URLs from Project Properties:"
            UrlMfsAdminApp = testRunner.testCase.testSuite.project.getPropertyValue("UrlMfsAdminApp")
            UrlQrCodeGen   = testRunner.testCase.testSuite.project.getPropertyValue("UrlQrCodeGen")
            pathScreenShot = testRunner.testCase.testSuite.project.getPropertyValue("pathScreenShot")
        log.info "Environment: $UrlMfsAdminApp"
        log.info "QR Code Generator Site: $UrlQrCodeGen"
        log.info "ScreenShot Folder: $pathScreenShot"
        
        // Create a new Firefox Profile to allow camera access
        FirefoxProfile profile = new FirefoxProfile()
        profile.setPreference("media.navigator.permission.disabled", true)
        
        // Create a new instance of the Firefox driver
        log.info "Selenium Server Staring..."
        testBrowser = new FirefoxDriver(profile)
        log.info "Selenium Server: Started."
        // Set Window position and size
        testBrowser.manage().window().setPosition(new Point(20,20))
        testBrowser.manage().window().setSize(new Dimension(750,500))
    }

    /*
     * After running TestSuite, export JUnit Report to specific directory
     * Use this function to parse the report using XPATH just to get simple
     * NAME, RESULT, TIME table for summary XLS
     */
    
    def JUnit_Report_Parse(){
        testBrowser.get("file:///T:/TestFramework/logs/soapui/rpt/index.html")
        
        /*
         * @TODO Get Project Name from the <H3></H3> element above the results <table>.
         * @TODO add JavaDoc comments for all methods
         */
        def thisTsName = testBrowser.findElement(By.xpath("//table[5]/tbody/tr/td")).getText()
        def rowCount=testBrowser.findElements(By.xpath("//table[5]/tbody/tr")).size()
        def resultsList = []

        // get Row Count.. will subtract '1' from the count later since it has a header row....
        println("ROWCOUNT: "  + rowCount)
        int i = 1
        for (tr in testBrowser.findElements(By.xpath("//table[5]/tbody/tr"))) {
            if (i > 1){
                def thisTcName = testBrowser.findElement(By.xpath("//table[5]/tbody/tr[$i]/td")).getText()
                def thisTcStat = testBrowser.findElement(By.xpath("//table[5]/tbody/tr[$i]/td[2]")).getText()
                def thisTcTime = testBrowser.findElement(By.xpath("//table[5]/tbody/tr[$i]/td[4]")).getText()
                resultsList.add( "$thisTcName, $thisTcStat, $thisTcTime" )
                //println("$i: TestCase: $thisTcName,  Status: $thisTcStat, Time: $thisTcTime")
            }
            i++
        }
        testBrowser.quit()
        
        println("Printing Results reed from the JUnit Report....")
        println("TestSuiteName: " + thisTsName)
        // subtract '1' from the rowCount since first row was actually the header row
        for (int j=0; j<rowCount-1; j++){
            println("Status " + j + ": " + resultsList[j])
        }
    }
    
    
    def MFS_Login(){
        log.info "Called: Selenium.MFS_Login"

        /// Open Admin App and Login
        /*
         * @TODO: port hardcoded login credentials to TestSuite Properties
         */

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/rest/login")
        element = testBrowser.findElement(By.name("identifier"))
        element.sendKeys("lr_ma")
        element = testBrowser.findElement(By.name("credential"))
        element.sendKeys("Qwerty01")
        element = testBrowser.findElement(By.id("loginBtn"))
        element.click()
    }

    def GetScreenshot(screenNum=1, browserScreen){
        log.info "Called: Selenium.GetScreenshot"
        //Get TimeStamp and Save Screenshot
        //Thread.sleep(3000)
        def thisDate = new Date().format("yyyy_MMdd'_'HHmmss_SSS")
        def screen = browserScreen.getScreenshotAs(OutputType.FILE)
        FileUtils.copyFile(screen, new File("${pathScreenShot}/selenium/${thisDate}-screen${screenNum}.png"))
    }

    def QRCodeGenerator(){
        log.info "Called: Selenium.QRCodeGenerator"

        def thisToken = testRunner.testCase.testSuite.getPropertyValue("A-TransactionToken")

        // Open QRCode Generator
        def thisUrl = testRunner.testCase.testSuite.    //project.getPropertyValue("A-TransactionToken")

        testBrowser.get(UrlQrCodeGen)
        element = testBrowser.findElement(By.linkText("Generate"))
        element.click()

        element = testBrowser.findElement(By.xpath("//textarea")).sendKeys("MCX.00000.${thisToken}")
        Thread.sleep(2000)

        // let customer scan the QRCode with the WalletApp before looking for resultant Token
        def alert = com.eviware.soapui.support.UISupport
        alert.showInfoMessage("Scan QR code...\nTHEN press OK when done")
        testBrowser.quit() //Close the browser
    }

    def QRCodeScanner(){
        log.info "Called: Selenium.QRCodeScanner"
        // Open QRCode Generator
        testBrowser.get(UrlQrCodeGen)
        element = testBrowser.findElement(By.linkText("Scan"))
        element.click()

        // let browser enable webcam before looking for resultant Token
        def alert = com.eviware.soapui.support.UISupport
        alert.showInfoMessage("Scan QR code...\nTHEN press OK when done")

        // pull token from browser results
        element = testBrowser.findElement(By.className("content-text"))
        def thisToken = element.getText().substring(10,22)
        testBrowser.quit()
        return thisToken
    }

    def MFS_Merch_Transaction_VerifyData(){

    }

    def MFS_Merch_AbsoluteLock(thisAction="Lock"){
        log.info "Called: Selenium.MFS_Merch_AbsoluteLock"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        
        if (thisAction == "Lock"){
            
            
            element = testBrowser.findElement(By.id("absoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Merchant Locked: FALSE(Locking It Now)"
                element.click()
            } else {
                log.info "Merchant Locked: TRUE(No Change Made)"
            }
                
            
        } else if (thisAction == "Release"){

            
            element = testBrowser.findElement(By.id("releaseAbsoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Merchant Locked: TRUE(UnLocking It Now)"
                element.click()
            } else {
                log.info "Merchant Locked: FALSE(No Change Made)"
            }

            
        
        } else {
            log.info "Doing Nothing: Not Release or Lock"
        }
        
        testBrowser.quit()
    }    
    

    def MFS_Merch_POS_AbsoluteLock(thisAction="Lock"){
        log.info "Called: Selenium.MFS_Merch_POS_AbsoluteLock(${thisAction})"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisStaff = testRunner.testCase.testSuite.getPropertyValue("M-Identifier")
        log.info "Staff Id" + thisStaff
        def thisURL = "${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/staff-member/${thisStaff}.xhtml"
        log.info "Opening: ${thisURL} thisURL"
        testBrowser.get(thisURL)
                
        if (thisAction == "Lock"){
         
            
            element = testBrowser.findElement(By.id("absoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Merchant Staff Locked: FALSE(Locking It Now)"
                element.click()
            } else {
                log.info "MerchantStaff  Locked: TRUE(No Change Made)"
            }
                
            
        } else if (thisAction == "Release"){

            
            element = testBrowser.findElement(By.id("releaseAbsoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Merchant Staff Locked: TRUE(UnLocking It Now)"
                element.click()
            } else {
                log.info "Merchant Staff Locked: FALSE(No Change Made)"
            }

            
        
        } else {
            log.info "Doing Nothing: Not Release or Lock"
        }
        
        Thread.sleep(15000)
        testBrowser.quit()
    }    
    

    
    
    def MFS_Merch_Suspend(thisAction="Suspend"){
        log.info "Called: Selenium.MFS_Merch_Suspend(${thisAction})"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        
        
        
        
         if (thisAction == "Suspend"){

            
            element = testBrowser.findElement(By.id("releaseSuspension"))
            if (element.isDisplayed() ) {
                log.info "Merchant is Suspended"
                } else {
                element = testBrowser.findElement(By.id("suspend"))
                if (element.isDisplayed() ) {
                        log.info "Merchant Suspended: FALSE"
                        element.click()
                }
            }
        
        
    
        } else if (thisAction == "Release"){

            element = testBrowser.findElement(By.id("releaseSuspension"))
            if (element.isDisplayed() ) {
                log.info "Merchant Suspended: TRUE"
                element.click()
                } else {
                element = testBrowser.findElement(By.id("suspend"))
                if (element.isDisplayed() ) {
                        log.info "Merchant Suspended: FALSE"
                }
            }
        } else {
            log.info "Doing Nothing: No Action for ${thisAction}"
        }
        
        
        testBrowser.quit()
    }

    def MFS_Merch_Suspend_Release(){
        log.info "Called: Selenium.MFS_Merch_Suspend_Release"

        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Merchant Suspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                    log.info "Merchant Suspended: FALSE"
            }
        }
        testBrowser.quit()
    }

    def MFS_Merch_Pocket_Suspend(){
        log.info "Called: Selenium.MFS_Merch_Pocket_Suspend"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Merchant Suspended: TRUE"
            } else {
            element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                    log.info "Merchant Suspended: FALSE"
                    element.click()
            }
        }

        //Close the browser
        testBrowser.quit()
    }

    def MFS_Merch_Pocket_Suspend_Release(){
        log.info "Called: Selenium.MFS_Merch_Pocket_Suspend_Release"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Merchant Suspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                    log.info "Merchant Suspended: FALSE"
            }
        }
        testBrowser.quit()
    }

    def MFS_Merch_Pocket_Suspend_All(){
        log.info "Called: Selenium.MFS_Merch_Pocket_Suspend_All"
        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList     = []

        // Merchant Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/pockets-list.xhtml")
        def rowCount=testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        //Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            def thisMerchPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisMerchPocket
            pocketList.add(thisMerchPocket)
        }

        // Suspend via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("releaseSuspension"))
            if (element.isDisplayed() ) {
                // RELEASE
                log.info "Merchant Pocket ${j} Suspended: TRUE"
            } else {
                // SUSPEND
                element = testBrowser.findElement(By.id("suspend"))
                if (element.isDisplayed() ) {
                    log.info "Merchant Pocket ${j} Suspended: FALSE"
                    element.click()
                    log.info "Merchant Pocket ${j} Suspended: TRUE"
                }
            }
        }

        //Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
    }

    def MFS_Merch_Pocket_Suspend_Release_All(){
        log.info "Called: Selenium.MFS_Merch_Pocket_Suspend_Release_All"
        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList     = []

        // Merchant Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/pockets-list.xhtml")
        def rowCount = testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        // Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            def thisMerchPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisMerchPocket
            pocketList.add(thisMerchPocket)
        }

        // Suspend via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("releaseSuspension"))
            if (element.isDisplayed() ) {
                // RELEASE
                log.info "Merchant Pocket ${j} Suspended: TRUE"
                element.click()
                log.info "Merchant Pocket ${j} Suspended: FALSE"
            } else {
                // SUSPEND
                element = testBrowser.findElement(By.id("suspend"))
                if (element.isDisplayed() ) {
                    log.info "Merchant Pocket ${j} Suspended: FALSE"

                }
            }
        }

        //Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
    }

    
    
    def MFS_Cust_Suspend(){
        log.info "Called: Selenium.MFS_Cust_Suspend"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Suspended: TRUE"
            } else {
            element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Suspended: FALSE"
                element.click()
            }
        }
        testBrowser.quit()
    }

    def MFS_Cust_Suspend_Release(){
        log.info "Called: MFS_Cust_Suspend_Release"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Suspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Suspended: FALSE"
            }
        }
        testBrowser.quit()
    }

    def MFS_Cust_Pocket_Suspend_All(){
        log.info "Called: MFS_Cust_Pocket_Suspend_All"
        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch       = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust        = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket  = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList = []

        // Customer Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        def rowCount=testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        // Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            thisCustPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisCustPocket
            pocketList.add(thisCustPocket)
        }

        // Suspend via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("releaseSuspension"))
            if (element.isDisplayed() ) {
                // RELEASE
                log.info "Customer Pocket ${j} Suspended: TRUE"
            } else {
                // SUSPEND
                element = testBrowser.findElement(By.id("suspend"))
                if (element.isDisplayed() ) {
                        log.info "Customer Pocket ${j} Suspended: FALSE"
                        element.click()
                        log.info "Customer Pocket ${j} Suspended: TRUE"
                }
            }
        }

        // Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
    }

    def MFS_Cust_Pocket_Suspend_Release_All(){
        log.info "Called: MFS_Cust_Pocket_Suspend_Release_All"

        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList     = []

        // Customer Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        def rowCount=testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        //Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            thisCustPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisCustPocket
            pocketList.add(thisCustPocket)
        }

        // Release Suspensions via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("releaseSuspension"))
             if (element.isDisplayed() ) {
                log.info "Customer Pocket ${j} Suspended: TRUE"
                    element.click()
                    log.info "Customer Pocket ${j} Suspended: FALSE"
            } else {
                element = testBrowser.findElement(By.id("suspend"))
                if (element.isDisplayed() ) {
                    log.info "Customer Pocket ${j} Suspended: FALSE"
                }
            }
        }

        //Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
    }

            def MFS_Cust_Pocket_Self_Suspend(){
        log.info "Called: MFS_Cust_Pocket_Self_Suspend"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")

        element = testBrowser.findElement(By.id("releaseSelfSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket SelfSuspended: TRUE"
            } else {
                element = testBrowser.findElement(By.id("selfSuspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Pocket SelfSuspended: FALSE"
            element.click()
            }
        }
        testBrowser.quit()
    }
    
        def MFS_Cust_Pocket_Self_Suspend_Release(){
        log.info "Called: MFS_Cust_Pocket_Self_Suspend_Release"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")

        element = testBrowser.findElement(By.id("releaseSelfSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket SelfSuspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("selfSuspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Pocket SelfSuspended: FALSE"
            }
        }
        testBrowser.quit()
    }
    
    def MFS_Cust_Pocket_Suspend(){
        log.info "Called: MFS_Cust_Pocket_Suspend"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket Suspended: TRUE"
            } else {
                element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Pocket Suspended: FALSE"
            element.click()
            }
        }
        testBrowser.quit()
    }

    def MFS_Cust_Pocket_Suspend_Release(){
        log.info "Called: MFS_Cust_Pocket_Suspend_Release"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")

        element = testBrowser.findElement(By.id("releaseSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket Suspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("suspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Pocket Suspended: FALSE"
            }
        }
        testBrowser.quit()
    }

    def MFS_Cust_Suspend_Self(){
        log.info "Called: MFS_Cust_Suspend_Self"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")
        element = testBrowser.findElement(By.id("releaseSelfSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket Self-Suspended: TRUE"
            } else {
            element = testBrowser.findElement(By.id("selfSuspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Pocket Self-Suspended: FALSE"
                element.click()
            }
        }
        testBrowser.quit()
    }

    def MFS_Cust_Suspend_Self_Release(){
        log.info "Called: MFS_Cust_Suspend_Self_Release"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")
        element = testBrowser.findElement(By.id("releaseSelfSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket Self-Suspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("selfSuspend"))
            if (element.isDisplayed() ) {
                log.info "Customer Pocket Self-Suspended: FALSE"
            }
        }
        testBrowser.quit()
    }
        def MFS_Cust_Self_Suspend_Release(){
        log.info "Called: MFS_Cust_Self_Suspend_Release"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("releaseSelfSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer SelfSuspended: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("selfSuspend"))
            if (element.isDisplayed() ) {
                log.info "Customer SelfSuspended: FALSE"
            }
        }
        testBrowser.quit()
    }
    
    //----------------------------------------
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        def MFS_Cust_Absolute_Lock(){
        log.info "Called: MFS_Cust_Absolute_Lock"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("absoluteLock"))
        if (element.isDisplayed() ) {
            log.info "Customer Absolute Lock: FALSE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("releaseAbsoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Customer Absolute Lock: TRUE"
            }

        }

        testBrowser.quit()
    }
    
            def MFS_Cust_Absolute_Lock_Release(){
        log.info "Called: MFS_Cust_Absolute_Lock_Release"

        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("releaseAbsoluteLock"))
        if (element.isDisplayed() ) {
            log.info "Customer Absolute Lock: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("absoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Customer Absolute Lock: FALSE"

            }
        }
        testBrowser.quit()
    }
    
            def MFS_Cust_Security_Lock_Release(){
        log.info "Called: MFS_Cust_Security_Lock_Release"

        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("releaseSecurityLock"))
        if (element.isDisplayed() ) {
            log.info "Customer Security Lock: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("absoluteLock"))
            if (element.isDisplayed() ) {
                log.info "Customer Security Lock: NEEDS TO BE CODED"
                //this needs to get changed to something else, Security Lock doesn't really have a visible parameter

            }
        }
        testBrowser.quit()
    }
        def MFS_Merch_Absolute_Lock(){
        log.info "Called: Selenium.MFS_Merch_Absolute_Lock"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        element = testBrowser.findElement(By.id("releaseAbsoluteLock"))
        if (element.isDisplayed() ) {
            log.info "Merchant Absolute Lock: TRUE"
            } else {
            element = testBrowser.findElement(By.id("absoluteLock"))
            if (element.isDisplayed() ) {
                    log.info "Merchant Absolute Lock: FALSE"
                    element.click()
            }
        }
        testBrowser.quit()
    }

    def MFS_Merch_Absolute_Lock_Release(){
        log.info "Called: Selenium.MFS_Merch_Absolute_Lock_Release"

        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        element = testBrowser.findElement(By.id("releaseAbsoluteLock"))
        if (element.isDisplayed() ) {
            log.info "Merchant Absolute Lock: TRUE"
            element.click()
            } else {
            element = testBrowser.findElement(By.id("absoluteLock"))
            if (element.isDisplayed() ) {
                    log.info "Merchant Absolute Lock: FALSE"
            }
        }
        testBrowser.quit()
    }
    
        def MFS_Cust_Pocket_Retire(){
        log.info "Called: MFS_Cust_Pocket_Retire"
        this.MFS_Login()

        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")

        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${thisCustPocket}.xhtml")

        element = testBrowser.findElement(By.id("retire"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket Retired: FALSE"
            element.click()
            }
        element = testBrowser.findElement(By.id("confirmOkBtn"))
        if (element.isDisplayed() ) {
            log.info "Customer Pocket Retired: TRUE"
            element.click()
            }
        testBrowser.quit()
    }
    
        def MFS_Cust_Pocket_Retire_All(){
        log.info "Called: MFS_Cust_Pocket_Retire_All"
        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch       = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust        = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket  = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList = []

        // Customer Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        def rowCount=testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        // Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            thisCustPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisCustPocket
            pocketList.add(thisCustPocket)
        }

        // Retire via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("retire"))
            if (element.isDisplayed() ) {
                        log.info "Customer Pocket ${j} Retired: FALSE"
                        element.click()
                }
            element = testBrowser.findElement(By.id("confirmOkBtn"))
            if (element.isDisplayed() ) {
            log.info "Customer Pocket Retired: TRUE"
            element.click()
            }
            }

        // Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
        }
        
            def MFS_Merch_Retire_Account(){
        log.info "Called: Selenium.MFS_Merch_Retire_Account"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/merchant/${thisMerch}/merchant-details.xhtml")

        element = testBrowser.findElement(By.id("retire"))
        if (element.isDisplayed() ) {
            log.info "Merchant Retired = FALSE"
            element.click()
            }
        element = testBrowser.findElement(By.id("confirmOkBtn"))
        if (element.isDisplayed() ) {
            element.click()
            log.info "Merchant Retired = TRUE"
            }
        testBrowser.quit()
        }
        
            def MFS_Cust_Retire_Account(){
        log.info "Called: Selenium.MFS_Cust_Retire_Account"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("retire"))
        if (element.isDisplayed() ) {
            log.info "Customer Account Retired: FALSE"
            element.click()
            }
        element = testBrowser.findElement(By.id("confirmOkBtn"))
        if (element.isDisplayed() ) {
            log.info "Customer Account Retired: TRUE"
            element.click()
            }
        testBrowser.quit()
    }
            def MFS_Cust_Pocket_Self_Suspend_All(){
        log.info "Called: MFS_Cust_Pocket_Self_Suspend_All"
        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch       = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust        = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket  = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList = []

        // Customer Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        def rowCount=testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        // Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            thisCustPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisCustPocket
            pocketList.add(thisCustPocket)
        }

        // Suspend via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("releaseSelfSuspension"))
            if (element.isDisplayed() ) {
                // RELEASE
                log.info "Customer Pocket ${j} SelfSuspended: TRUE"
            } else {
                // SUSPEND
                element = testBrowser.findElement(By.id("selfSuspend"))
                if (element.isDisplayed() ) {
                        log.info "Customer Pocket ${j} SelfSuspended: FALSE"
                        element.click()
                        log.info "Customer Pocket ${j} SelfSuspended: TRUE"
                }
            }
        }

        // Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
    }
    
        def MFS_Cust_Pocket_Self_Suspend_Release_All(){
        log.info "Called: MFS_Cust_Pocket_Self_Suspend_Release_All"

        this.MFS_Login()

        //Pull Properties and Create Vars
        def thisMerch      = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust       = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        def thisCustPocket = testRunner.testCase.testSuite.getPropertyValue("C-PocketId")
        def pocketList     = []

        // Customer Pocket List page and Detect Pockets
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        def rowCount=testBrowser.findElements(By.xpath("//table[@id='default-pocket-table']/tbody/tr")).size()
        log.info "ROWCOUNT: " + rowCount
        log.info "Saving Screenshot #1"
        GetScreenshot(1, testBrowser)

        // Pass values to an array, THEN use array to get links...
        //Detect Pockets and push to array
        for (int i=1; i<rowCount+1; i++){
            thisCustPocket = testBrowser.findElement(By.xpath("//table[@id='default-pocket-table']/tbody/tr[${i}]")).getAttribute('pocketid')
            log.info "Current Pocket: " + thisCustPocket
            pocketList.add(thisCustPocket)
        }

        // Release Suspensions via Iteration
        for (j in pocketList){
            testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pocket/${j}.xhtml")
            log.info "PocketList: Pocket: $j: Checking visible links"
            Thread.sleep(3000)
            element = testBrowser.findElement(By.id("releaseSelfSuspension"))
             if (element.isDisplayed() ) {
                log.info "Customer Pocket ${j} SelfSuspended: TRUE"
                    element.click()
                    log.info "Customer Pocket ${j} SelfSuspended: FALSE"
            } else {
                element = testBrowser.findElement(By.id("selfSuspend"))
                if (element.isDisplayed() ) {
                    log.info "Customer Pocket ${j} SelfSuspended: FALSE"
                }
            }
        }

        //Verify Changes Were Successful
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/pockets-list.xhtml")
        log.info "Saving Screenshot #2"
        GetScreenshot(2, testBrowser)
        testBrowser.quit()
    }
            def MFS_Cust_Self_Suspend(){
        log.info "Called: Selenium.MFS_Cust_Self_Suspend"
        this.MFS_Login()

        def thisMerch = testRunner.testCase.testSuite.getPropertyValue("M-MerchantId")
        def thisCust  = testRunner.testCase.testSuite.getPropertyValue("C-CustomerId")
        testBrowser.get("${UrlMfsAdminApp}/AdminApp/page/customer/${thisCust}/personal-information.xhtml")

        element = testBrowser.findElement(By.id("releaseSelfSuspension"))
        if (element.isDisplayed() ) {
            log.info "Customer SelfSuspended: TRUE"
            } else {
            element = testBrowser.findElement(By.id("selfSuspend"))
            if (element.isDisplayed() ) {
                log.info "Customer SelfSuspended: FALSE"
                element.click()
            }
        }
        testBrowser.quit()
    }
}

Tags