F# Canopy UI tests -- http://lefthandedgoat.github.io/canopy/
` FSharp Canopy Tests namespace RegressionTests open System open System.Configuration open runner open canopy open configuration open reporters open QuoteHelper module QuoteSiteTests = let runTest = ( start chrome let mainBrowser = browser elementTimeout <- 15.0 compareTimeout <- 15.0 let _testpage = ConfigurationManager.AppSettings.\["AolSiteUrl"] let _username = ConfigurationManager.AppSettings.\["AolChallengerId"] let _password = ConfigurationManager.AppSettings.\["AolPassword"] let _passwordChangeToThis = ConfigurationManager.AppSettings.\["AolPasswordChangeToThis"] let _includePasswordChangeTest = ConfigurationManager.AppSettings.\["IncludePasswordChangeTest"] let _quickSearchText = ConfigurationManager.AppSettings.\["QuickSearchText"] let _quickSearchFindInvestor = ConfigurationManager.AppSettings.\["QuickSearchFindInvestor"] let _path = ConfigurationManager.AppSettings.\["OutputTestResults"] QuoteHelper.deleteFiles _path "" true for file in System.IO.Directory.EnumerateFiles(_path) do let tempPath = System.IO.Path.Combine(_path, file) System.IO.File.Delete(tempPath) context ("Testing :: eQuote - " + _testpage + "/Quote") before (fun _ -> describe "Starting test" url (_testpage + "/Quote") ) ntest "Login" (fun _ -> describe ("Login with " + _username) url _testpage "#userId" << _username "#password" << _password click ".submit" // on (_testpage + "/Secure/Home/") ) ntest "GIP Quote - Fixed Term" (fun _ -> describe "Creating GIP quote – fixed 3 year" js "$('input:radio\[name=NewPolicyType]:first').attr('checked', true);" |> ignore click "#btnContinue1" sleep 5 let setQuote = QuoteHelper.createQuoteTerm "100000" "Monthly" "3" js setQuote |> ignore click "#btnRunQuote" sleep 5 click "#btnSaveQuote" sleep 3 let linkText = read "#yourQuoteId" describe linkText screenshot _path linkText |> ignore ) ntest "GIP quote – life" (fun _ -> describe "Creating GIP quote – life" js "$('input:radio\[name=NewPolicyType]::nth(1)').attr('checked', true);" |> ignore click "#btnContinue1" sleep 5 js " $('input:radio\[name=ProductTerm]::nth(1)').click();" |> ignore sleep 1 let setQuote = QuoteHelper.createQuoteLife "100000" "Monthly" js setQuote |> ignore sleep 1 js "$('#InitialCommissionRate').val('0');" |> ignore click "#btnRunQuote" sleep 5 click "#btnSaveQuote" sleep 3 let linkText = read "#yourQuoteId" describe linkText screenshot _path linkText |> ignore ) ntest "GA Quote - Fixed Term" (fun _ -> describe "Creating Fee for service annuity quote - FIXED" js "$('input:radio\[name=NewPolicyType]:first').attr('checked', true);" |> ignore click "#btnContinue1" sleep 5 let setQuote = QuoteHelper.createQuoteTerm "100000" "Monthly" "3" js setQuote |> ignore sleep 1 js "$('#InitialCommissionRate').val('0.0055');" |> ignore click "#btnRunQuote" sleep 5 click "#btnSaveQuote" sleep 3 let linkText = read "#yourQuoteId" describe linkText screenshot _path linkText |> ignore ) ntest "GA quote – life" (fun _ -> describe "Creating GA quote – life" js "$('input:radio\[name=NewPolicyType]::nth(1)').attr('checked', true);" |> ignore click "#btnContinue1" sleep 5 js " $('input:radio\[name=ProductTerm]::nth(1)').click();" |> ignore sleep 1 let setQuote = QuoteHelper.createQuoteLife "100000" "Yearly" js setQuote |> ignore sleep 1 js "$('#InitialCommissionRate').val('0');" |> ignore click "#btnRunQuote" sleep 5 click "#btnSaveQuote" sleep 3 let linkText = read "#yourQuoteId" describe linkText screenshot _path linkText |> ignore ) ntest "GreenId Test" (fun _ -> describe "GreenId Test" js "$('input:radio\[name=NewPolicyType]::nth(1)').attr('checked', true);" |> ignore click "#btnContinue1" sleep 5 js " $('input:radio\[name=ProductTerm]::nth(1)').click();" |> ignore sleep 1 let setQuote = QuoteHelper.createQuoteLife "100000" "Yearly" js setQuote |> ignore sleep 1 js "$('#InitialCommissionRate').val('0');" |> ignore click "#btnRunQuote" sleep 5 click "#btnSaveQuote" sleep 3 let linkText = read "#yourQuoteId" describe linkText click "#btnApply" sleep 5 js QuoteHelper.greenId |> ignore sleep 1 click "#InvestorDetails_IdentityVerification_CheckId" screenshot _path ("GreenId -" + linkText )|> ignore ) run () quit mainBrowser ) namespace RegressionTests module QuoteHelper = let createQuoteTerm amount paymentFrequency term = ( @" $('#InvestorDetails_Title').val('Mr'); $('#InvestorDetails_GivenNames').val('test'); $('#InvestorDetails_Surname').val('client'); $('#InvestorDetails_DateOfBirth_day').val(1); $('#InvestorDetails_DateOfBirth_month').val(1); $('#InvestorDetails_DateOfBirth_year').val(1937); $('#InvestmentAmount').val(" + amount + "); $('#InvestmentAmount_editor').val('$100,000.00'); $('#PaymentFrequency').val('" + paymentFrequency + "'); $('#Term').val('" + term + "'); $('#InitialCommissionRate').val('0'); $('#Indexation').val('ZeroPercent'); $('#OngoingCommissionRate').val('0.00550'); $('#ResidualCapitalValueRate').val('1.00000'); $('#JointInvestorDetails_Title').val('Mr'); $('#JointInvestorDetails_GivenNames').val('joint test'); $('#JointInvestorDetails_Surname').val('client'); $('#JointInvestorDetails_DateOfBirth_day').val(31); $('#JointInvestorDetails_DateOfBirth_month').val(12); $('#JointInvestorDetails_DateOfBirth_year').val(1956);") let createQuoteLife amount paymentFrequency = ( @" $('#InvestorDetails_Title').val('Mr'); $('#InvestorDetails_GivenNames').val('test'); $('#InvestorDetails_Surname').val('client'); $('#InvestorDetails_DateOfBirth_day').val(1); $('#InvestorDetails_DateOfBirth_month').val(1); $('#InvestorDetails_DateOfBirth_year').val(1937); $('#InvestmentAmount').val(" + amount + "); $('#InvestmentAmount_editor').val('$100,000.00'); $('#PaymentFrequency').val('" + paymentFrequency + "'); $('#InitialCommissionRate').val('0.0055'); $('#Indexation').val('ZeroPercent'); $('#OngoingCommissionRate').val('0.00550'); $('#ResidualCapitalValueRate').val('1.00000'); $('#JointInvestorDetails_Title').val('Mr'); $('#JointInvestorDetails_GivenNames').val('joint test'); $('#JointInvestorDetails_Surname').val('client'); $('#JointInvestorDetails_DateOfBirth_day').val(31); $('#JointInvestorDetails_DateOfBirth_month').val(12); $('#JointInvestorDetails_DateOfBirth_year').val(1956);") let greenId = (@" $('#InvestorDetails_ResidentialAddress_UnitNumber').val('5'); $('#InvestorDetails_ResidentialAddress_StreetNumber').val('48'); $('#InvestorDetails_ResidentialAddress_StreetName').val('Manchester'); $('#InvestorDetails_ResidentialAddress_Suburb').val('Gymea'); $('#InvestorDetails_ResidentialAddress_StreetType').val('RD'); $('#InvestorDetails_ResidentialAddress_State').val('NSW'); $('#InvestorDetails_ResidentialAddress_Postcode').val(2227); ") let rec deleteFiles srcPath pattern includeSubDirs = if not <| System.IO.Directory.Exists(srcPath) then let msg = System.String.Format("Source directory does not exist or could not be found: {0}", srcPath) raise (System.IO.DirectoryNotFoundException(msg)) for file in System.IO.Directory.EnumerateFiles(srcPath, pattern) do let tempPath = System.IO.Path.Combine(srcPath, file) System.IO.File.Delete(tempPath) if includeSubDirs then let srcDir = new System.IO.DirectoryInfo(srcPath) for subdir in srcDir.GetDirectories() do deleteFiles subdir.FullName pattern includeSubDirs `