devkeydet / dyn365-ce-devops

DevOps for Dynamics 365 Customer Engagement (CE) is becoming a popular topic. The goal of this project is to help Dynamics 365 CE solution builders understand and accelerate their implementation of DevOps practices with Dynamics CE and VSTS.
MIT License
90 stars 28 forks source link

Add automated ui testing #21

Open devkeydet opened 7 years ago

devkeydet commented 7 years ago

https://github.com/microsoft/easyrepro

devkeydet commented 7 years ago

We already have automated ui testing in the reference app: https://github.com/devkeydet/CrmAsyncRequestResponseSampleV2/tree/master/UIAutomationTests

However, there is a known issue with https://github.com/Microsoft/EasyRepro/ when executing a headless test with the phantomjs driver: https://github.com/devkeydet/CrmAsyncRequestResponseSampleV2/issues/23

See: https://github.com/Microsoft/EasyRepro/issues/47

Once the issue is resolved, we'll update one of the release builds to show how to run the ui automation test.

devkeydet commented 7 years ago

Two options: -Spin up our own agent with a browser installed and use the browser driver (adds complexity) -Wait until phantomjs is working

camelCaseDave commented 6 years ago

@devkeydet I believe there's another working option you can use today.

Microsoft.Dynamics365.UIAutomation.Browser.BrowserOptions now supports headless for Chrome, which works in a hosted build agent:

public static class TestSettings
{
    public static BrowserOptions Options { get { return _options; } }

    private static BrowserOptions _options = new BrowserOptions
    {
        BrowserType = BrowserType.Chrome,
        PrivateMode = true,
        FireEvents = true,
        Headless = true
    };
}

Then in your build definition, just install Chrome before running your UI tests by running a PowerShell script task:

$Path = $env:TEMP;
$Installer = "chrome_installer.exe";
Invoke-WebRequest "http://dl.google.com/chrome/install/375.126/chrome_installer.exe" -OutFile $Path\$Installer;
Start-Process -FilePath $Path\$Installer -Args "/silent /install" -Verb RunAs -Wait;
Remove-Item $Path\$Installer