naps2/NAPS2.App.Tests/Appium/ScanAndSaveTests.cs
2024-08-10 19:09:29 -07:00

83 lines
3.4 KiB
C#

using System.Threading;
using NAPS2.App.Tests.Targets;
using NAPS2.App.Tests.Verification;
using NAPS2.Scan;
using NAPS2.Sdk.Tests.Asserts;
using Xunit;
namespace NAPS2.App.Tests.Appium;
#pragma warning disable CS0162
[Collection("appium")]
public class ScanAndSaveTests : AppiumTests
{
[VerifyTheory(AllowDebug = true, WindowsAppium = true)]
[ClassData(typeof(AppiumTestData))]
public void ScanWiaSavePdf(IAppTestTarget target)
{
Init(target);
// Clicking Scan without a profile opens the profile settings window
ClickAtName("Scan");
ClickAtName("Choose device");
WaitFor(() => HasElementWithName("Always Ask"));
var deviceName = AppTestHelper.GetDeviceName(Driver.Wia);
// WIA driver is selected by default, so we just click the device
if (!string.IsNullOrEmpty(deviceName)) ClickAtName(deviceName);
ClickAt(_session.FindElementByName("Select"));
WaitFor(() => !HasElementWithName("Select"));
// Click OK in the profile settings window
ClickAtName("OK");
WaitFor(() => HasElementWithName("Cancel"));
// Wait for scanning to finish
WaitFor(() => !HasElementWithName("Cancel"), 30_000);
ResetMainWindow();
// Save "test.pdf" in the default location (which will be the test data path as NAPS2 knows we're in a test)^
ClickAtName("Save PDF");
ResetMainWindow();
var fileTextBox = WaitFor(() => _session.FindElementsByName("File name:").Last());
ClickAt(fileTextBox);
fileTextBox.SendKeys("test.pdf");
ClickAtName("Save");
// Wait for the save to finish, it should be almost instant
Thread.Sleep(1000);
PdfAsserts.AssertPageCount(1, Path.Combine(FolderPath, "test.pdf"));
AppTestHelper.AssertNoErrorLog(FolderPath);
}
[VerifyTheory(AllowDebug = true, WindowsAppium = true)]
[ClassData(typeof(AppiumTestData))]
public void ScanTwainSaveImage(IAppTestTarget target)
{
Init(target);
// Clicking Scan without a profile opens the profile settings window
ClickAtName("Scan");
ClickAtName("Choose device");
WaitFor(() => HasElementWithName("Always Ask"));
var deviceName = AppTestHelper.GetDeviceName(Driver.Twain);
ClickAtName("TWAIN Driver");
Thread.Sleep(100);
WaitFor(() => HasElementWithName("Always Ask"));
if (!string.IsNullOrEmpty(deviceName)) ClickAtName(deviceName);
ClickAtName("Select");
WaitFor(() => !HasElementWithName("Select"));
// Click OK in the profile settings window
ClickAtName("OK");
WaitFor(() => HasElementWithName("Cancel"));
// Wait for scanning to finish
WaitFor(() => !HasElementWithName("Cancel"), 30_000);
ResetMainWindow();
// Save "test.pdf" in the default location (which will be the test data path as NAPS2 knows we're in a test)^
ClickAtName("Save Images");
ResetMainWindow();
var fileTextBox = WaitFor(() => _session.FindElementsByName("File name:").Last());
ClickAt(fileTextBox);
fileTextBox.SendKeys("test.jpg");
ClickAtName("Save");
// Wait for the save to finish, it should be almost instant
Thread.Sleep(1000);
ImageAsserts.Inches(Path.Combine(FolderPath, "test.jpg"), 8.5, 11);
AppTestHelper.AssertNoErrorLog(FolderPath);
}
}