New: Set up CI with Azure Pipelines (#897)

* Set up CI with Azure Pipelines

[skip ci]

* Remove Travis, Build Multiple Environments

* Change Task Type to Bash

* Checkout submodules

* Remove Appveyor Tests, Add Azure Tests

* Oops Forget Steps

* bad name

* test script fixes

* add tests to build job

* fixup tests

* name test runs

* fpcalc and artifacts

* Try to fix installer

* Publish separately

* Try publish

* Another go at artifacts

* Tidy up

* Add sentry, assembly info patching and bump version

* Only patch one AssemblyInfo; set node version 10

* Try pipeline artifacts again

* Tidy up - pipeline artifact seems to be way forward

* Fix installer publish

* first go at test job seperation

* job names and depends/consitions for tests

* pusblish single file test artifact

* pipeline artifact for test

* blitz the pattern filter

* windows test jobs

* mac tests, checkout on test jobs

* try to download build artifact to test job

* download and extract artifact

* Set LD_LIBRARY_PATH and print some sqlite debug info on mac tests

* fixup! tests

* integration test fixes

* fixup! integration test fixes

* fixup! integration test fixes

* more fixup

* use bash cp

* test fixups

* mkdir before copy

* linux works! add osx integration tests

* im tooo tired

* coverage attempt

* coverage seperate stage

* windows paths for integration test

* switch coverage to windows where opencover actually works

* fix test script

* one last go

* Simplify installer, try to fix name

* Try to parallelize backend and frontend build

* Try adding a matrix

* Try matrix jobs not stages

* Try to fix package step

* Remove opencover install

* Try to fix tests

* coverage fixes

* revert build.sh changes

* triggers so we don't double build

* Publish coverage package so we can debug

* try coverage no build, output artifact

* use the full pipeline workspace from build job

* fix automation tests for new ui

* Assorted fix attempts

* Another go

* MacOS debug

* Tidy up, try to fix mac

* Fix mac fpcalc, add mac integration tests

* Add cross platform automation tests

* Fix packages

* Try to fix Automation tests

* Don't wait on the installer to create standard packages

* Fixes

* delete logentries reference

* run automation tests in headless mode

* try install firefox mac

* Revert "try install firefox mac"

This reverts commit 4684bb1901.

* test sonarcloud prepare outputs

* basic analyze and upload

* don't limit fetch depth on analyze

* manual scanner do front and backend?

* full analyize with tests, coverage

* should depend on tests, coverage

* no need for condition on coverage

* Fix up build numbering

* Try to fix sonar

* Separate coverage calculation and publication

* Try to fix coverage upload
This commit is contained in:
Qstick 2019-08-13 13:15:59 -04:00 committed by GitHub
commit 6932046c5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 664 additions and 244 deletions

View file

@ -34,7 +34,9 @@ namespace NzbDrone.Automation.Test
[OneTimeSetUp]
public void SmokeTestSetup()
{
driver = new FirefoxDriver();
var options = new FirefoxOptions();
options.AddArguments("--headless");
driver = new FirefoxDriver(options);
_runner = new NzbDroneRunner(LogManager.GetCurrentClassLogger());
_runner.KillAll();
@ -45,7 +47,7 @@ namespace NzbDrone.Automation.Test
var page = new PageBase(driver);
page.WaitForNoSpinner();
driver.ExecuteScript("window.NzbDrone.NameViews = true;");
driver.ExecuteScript("window.Lidarr.NameViews = true;");
GetPageErrors().Should().BeEmpty();
}

View file

@ -1,4 +1,4 @@
using FluentAssertions;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Automation.Test.PageModel;
using OpenQA.Selenium;
@ -21,7 +21,7 @@ namespace NzbDrone.Automation.Test
{
page.ArtistNavIcon.Click();
page.WaitForNoSpinner();
page.FindByClass("iv-artist-index-artistindexlayout").Should().NotBeNull();
page.Find(By.CssSelector("div[class*='ArtistIndex']")).Should().NotBeNull();
}
[Test]
@ -30,7 +30,7 @@ namespace NzbDrone.Automation.Test
page.CalendarNavIcon.Click();
page.WaitForNoSpinner();
page.FindByClass("iv-calendar-calendarlayout").Should().NotBeNull();
page.Find(By.CssSelector("div[class*='CalendarPage']")).Should().NotBeNull();
}
[Test]
@ -39,7 +39,9 @@ namespace NzbDrone.Automation.Test
page.ActivityNavIcon.Click();
page.WaitForNoSpinner();
page.FindByClass("iv-activity-activitylayout").Should().NotBeNull();
page.Find(By.LinkText("Queue")).Should().NotBeNull();
page.Find(By.LinkText("History")).Should().NotBeNull();
page.Find(By.LinkText("Blacklist")).Should().NotBeNull();
}
[Test]
@ -48,7 +50,8 @@ namespace NzbDrone.Automation.Test
page.WantedNavIcon.Click();
page.WaitForNoSpinner();
page.FindByClass("iv-wanted-missing-missinglayout").Should().NotBeNull();
page.Find(By.LinkText("Missing")).Should().NotBeNull();
page.Find(By.LinkText("Cutoff Unmet")).Should().NotBeNull();
}
[Test]
@ -57,20 +60,20 @@ namespace NzbDrone.Automation.Test
page.SystemNavIcon.Click();
page.WaitForNoSpinner();
page.FindByClass("iv-system-systemlayout").Should().NotBeNull();
page.Find(By.CssSelector("div[class*='Health']")).Should().NotBeNull();
}
[Test]
public void add_series_page()
public void add_artist_page()
{
page.ArtistNavIcon.Click();
page.WaitForNoSpinner();
page.Find(By.LinkText("Add Artist")).Click();
page.Find(By.LinkText("Add New")).Click();
page.WaitForNoSpinner();
page.FindByClass("iv-addartist-addartistlayout").Should().NotBeNull();
page.Find(By.CssSelector("input[class*='AddNewArtist-searchInput']")).Should().NotBeNull();
}
}
}
}

View file

@ -85,8 +85,14 @@
<PackageReference Include="NUnit">
<Version>3.11.0</Version>
</PackageReference>
<PackageReference Include="Selenium.Firefox.WebDriver">
<Version>0.24.0</Version>
</PackageReference>
<PackageReference Include="Selenium.Support">
<Version>3.2.0</Version>
<Version>3.141.0</Version>
</PackageReference>
<PackageReference Include="Selenium.WebDriver">
<Version>3.141.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Threading;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
@ -47,16 +47,16 @@ namespace NzbDrone.Automation.Test.PageModel
});
}
public IWebElement ArtistNavIcon => FindByClass("x-artist-nav");
public IWebElement ArtistNavIcon => Find(By.LinkText("Artist"));
public IWebElement CalendarNavIcon => FindByClass("x-calendar-nav");
public IWebElement CalendarNavIcon => Find(By.LinkText("Calendar"));
public IWebElement ActivityNavIcon => FindByClass("x-activity-nav");
public IWebElement ActivityNavIcon => Find(By.LinkText("Activity"));
public IWebElement WantedNavIcon => FindByClass("x-wanted-nav");
public IWebElement WantedNavIcon => Find(By.LinkText("Wanted"));
public IWebElement SettingNavIcon => FindByClass("x-settings-nav");
public IWebElement SettingNavIcon => Find(By.LinkText("Settings"));
public IWebElement SystemNavIcon => FindByClass("x-system-nav");
public IWebElement SystemNavIcon => Find(By.PartialLinkText("System"));
}
}
}

View file

@ -236,10 +236,6 @@
<Project>{74420a79-cc16-442c-8b1e-7c1b913844f0}</Project>
<Name>CurlSharp</Name>
</ProjectReference>
<ProjectReference Include="..\LogentriesNLog\LogentriesNLog.csproj">
<Project>{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}</Project>
<Name>LogentriesNLog</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="DotNet4.SocksProxy">
@ -270,4 +266,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>