/// <summary>
 /// Initializes a new instance of the <see cref="ManagementModule"/>.
 /// </summary>
 /// <param name="config">The config to use.</param>
 /// <param name="screenshotManager">The screenshot manager to use.</param>
 /// <param name="screenshotProvider">The screenshot provider to use.</param>
 public ManagementModule(
     Configuration.Configuration config,
     ScreenshotManager screenshotManager,
     ScreenshotProvider screenshotProvider
     )
 {
     _config             = config;
     _screenshotManager  = screenshotManager;
     _screenshotProvider = screenshotProvider;
 }
示例#2
0
        private void SnippetDialog_MouseUp(object sender, MouseEventArgs e)
        {
            _drawing = false;
            Hide();

            //ensures border is not captured
            _selectedArea.Inflate(-1, -1);

            SnippedImage = ScreenshotProvider.TakeScreenshot(_selectedArea);
            DialogResult = DialogResult.OK;
        }
示例#3
0
        private void CaptureActiveWindow()
        {
            IntPtr          winHandle = NativeMethods.GetForegroundWindow();
            NativeRectangle winRectangle;

            NativeMethods.GetWindowRect(winHandle, out winRectangle);
            Rectangle area = winRectangle.ToRectangle();

            Bitmap screenshot = ScreenshotProvider.TakeScreenshot(area);

            ProcessScreenshot(screenshot);
        }
示例#4
0
        private void SnippetForm_Load(object sender, EventArgs e)
        {
            Location = new Point(SystemInformation.VirtualScreen.Left, 0);
            Size     = new Size(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);

            TopMost = true;
            Cursor  = Cursors.Cross;

            var screenshot = ScreenshotProvider.TakeScreenshotAllScreens();

            BackgroundImage = screenshot;
        }
示例#5
0
 public void TearDown()
 {
     if (TestContext.CurrentContext.Result.Outcome != ResultState.Success)
     {
         foreach (var failedScreen in Directory.GetFiles(FileProvider.GetFailedScreensDirectory()))
         {
             AllureLifecycle.Instance.AddAttachment(failedScreen);
         }
         AllureLifecycle.Instance.AddAttachment("Screenshot", "image/png",
                                                ScreenshotProvider.PublishScreenshot($"Screenshot_{DateTime.Now.ToFileTime()}"));
     }
     Browser.GetInstance().Quit();
 }
示例#6
0
        private void CaptureArea()
        {
            var screenshot = ScreenshotProvider.TakeScreenshot(SystemInformation.VirtualScreen);
            var dialog     = new SelectAreaDialog(screenshot);

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                Bitmap croppedScreenshot = screenshot.Clone(
                    dialog.SelectedArea,
                    screenshot.PixelFormat);
                ProcessScreenshot(croppedScreenshot);
            }
            dialog.Dispose();
        }
示例#7
0
        public void Step(string name, Action action)
        {
            var caseId = TestExecutionContext.CurrentContext.CurrentTest.Id;
            var uuid   = Guid.NewGuid().ToString("N");

            Allure.StartStep(caseId, uuid, new StepResult()
            {
                name = name
            });

            int       logLength     = TestExecutionContext.CurrentContext.CurrentResult.Output.Length;
            Exception stepException = null;

            try
            {
                action();
            }
            catch (Exception e)
            {
                stepException = e;
                AllureHelper.AttachPng("FailedElement", File.ReadAllBytes(new DirectoryInfo(FileProvider.GetFailedScreensDirectory())
                                                                          .GetFiles().OrderByDescending(file => file.LastWriteTime).First().FullName));
                AllureHelper.AttachPng("Screenshot",
                                       File.ReadAllBytes(ScreenshotProvider.PublishScreenshot($"Screenshot_{DateTime.Now.ToFileTime()}")));
                throw;
            }
            finally
            {
                Allure.UpdateStep(uuid, x =>
                {
                    x.status        = GetStatusFromException(stepException);
                    x.statusDetails = new StatusDetails
                    {
                        message = stepException?.Message,
                        trace   = stepException?.StackTrace
                    };
                    x.attachments.AddRange(AllureHelper.GetAttaches());
                });
                Allure.StopStep(uuid);
            }
        }
示例#8
0
        public void TakesAScreenshotForAWebPageNonMatch()
        {
            var url      = Directory.GetCurrentDirectory() + "/WebPages/DemoPage2.html";
            var filePath = "pic.png";

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }

            using (var driver = new ChromeDriver(@"Drivers/"))
            {
                var sut = new ScreenshotProvider(driver);
                sut.SaveScreenshot(url, filePath);
            }

            var bitmapComparer = new BitmapComparer();
            var result         = bitmapComparer.AreSame(@"pic.png", @"OldImages/pic.png");

            Assert.IsFalse(result);
        }
示例#9
0
        public void RunTests()
        {
            var screenshots = new[]
            {
                new ScreenshotDefinition(
                    @"http://www.thelondonclinic.co.uk/patient-care/your-stay-at-the-london-clinic", "Your_Stay.png"),
                new ScreenshotDefinition(@"http://www.thelondonclinic.co.uk/eye-centre", "Eye_Centre.png")
            };

            var oldFilePath        = new FilePathProvider("Original");
            var newFilePath        = new FilePathProvider("New");
            var screenshotProvider = new ScreenshotProvider(new ChromeDriver(@"Drivers/"));

            var runner = new ScreenshotRunner(screenshotProvider, oldFilePath);

            runner.CreateScreenshots(screenshots);

            var screenshotEngine = new ScreenshotTestEngine(oldFilePath, newFilePath, screenshotProvider);

            var testRunner = new ScreenshotTestRunner(screenshotEngine, screenshots);
            var results    = testRunner.Run();
        }
        public void Capture_on_Mac()
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) is false)
            {
                return;
            }

            var screenshotspath = "screenshots";

            if (Directory.Exists(screenshotspath))
            {
                Directory.Delete(screenshotspath, true);
            }

            var sut = new ScreenshotProvider(screenshotspath);

            sut.Capture();
            Assert.Single(Directory.GetFiles(screenshotspath, "*.jpg"));
            Thread.Sleep(1500);
            sut.Capture();
            Assert.Equal(2, Directory.GetFiles(screenshotspath, "*.jpg").Length);
        }
示例#11
0
        private void CaptureFullScreen()
        {
            Bitmap screenshot = ScreenshotProvider.TakeScreenshotOneScreen(Screen.PrimaryScreen);

            DoAfterCaptureStuff(screenshot);
        }
示例#12
0
 private string MakeScreenshot()
 {
     return(ScreenshotProvider.PublishScreenshot($"Screenshot_{DateTime.Now.ToFileTime()}"));
 }
示例#13
0
        private void CaptureFullscreen()
        {
            Bitmap screenshot = ScreenshotProvider.TakeScreenshot(SystemInformation.VirtualScreen);

            ProcessScreenshot(screenshot);
        }
示例#14
0
 public ScreenshotHooks(ScenarioContext scenarioContext, ScreenshotProvider screenshotProvider)
 {
     this.scenarioContext    = scenarioContext;
     this.screenshotProvider = screenshotProvider;
 }
示例#15
0
 public void OnPointerClick(PointerEventData eventData)
 {
     ScreenshotProvider.CaptureScreenshot();
     StartCoroutine(HideUI(0.5f));
 }