Увеличьте разрешение экрана в Test Agent

Выполнение автоматического теста для настольного приложения WPF отлично работает на моем локальном компьютере и на виртуальной машине Azure Windows Server 2012R2 при доступе через RDP.

Однако, когда виртуальная машина используется в качестве машины сборки, управляемой агентом тестирования на TFS или VSTS, все тесты завершаются неудачно, поскольку для разрешения экрана установлено разрешение экрана 1024x768. Приложение не настроено для работы до тех пор, пока не будут настроены эти параметры отображения. Есть ли способ изменить настройки экрана при развертывании тестового агента?

Изменение разрешения экрана сеанса агента VSTS при запуске тестов транспортира


comment
Агент работает в интерактивном режиме?   -  person starian chen-MSFT    schedule 23.08.2017
comment
Войдите на этот компьютер и проверьте, правильно ли он открывает приложение WPF.   -  person starian chen-MSFT    schedule 24.08.2017
comment
Машина смогла правильно открыть приложение WPF через RDP. Он также работает на локальной машине.   -  person GS Team    schedule 24.08.2017
comment
Какая задача использовалась для запуска теста? Visual Studio Test или Run Functional Test?   -  person starian chen-MSFT    schedule 24.08.2017
comment
С другой стороны, я имею в виду войти в систему для тестирования машины через RDP (та же учетная запись), затем создать очередь и проверить, нормально ли открывается приложение WPF.   -  person starian chen-MSFT    schedule 24.08.2017
comment
Это очень похоже на эту проблему здесь social.msdn.microsoft.com/Forums/vstudio/en-US/   -  person GS Team    schedule 25.08.2017
comment
Мы используем функциональный тест. Когда мы развертываем тестовый агент, у него проверяется интерактивный процесс, поэтому это означает, что мы должны работать в интерактивном режиме. Мы также попытались войти в тестовую машину через RDP (та же учетная запись) и запустить тест, и он работает нормально.   -  person GS Team    schedule 25.08.2017
comment
нужно ли настраивать агент тестирования для взаимодействия с рабочим столом (интерактивный процесс) и агента сборки, работающего в интерактивном режиме? Мы используем tfs 2015 update 3.   -  person GS Team    schedule 25.08.2017
comment
Приложение WPF открывается нормально. Это разрешение экрана, которое всегда по умолчанию не поддерживается приложением.   -  person GS Team    schedule 25.08.2017
comment
Больше обновлений, когда мы входим в систему через RDP (та же учетная запись), мы ставим сборку в очередь, приложение WPF открывается нормально, а разрешение экрана хорошее. Проблема возникает, когда мы отключаем сеанс и запускаем, когда виртуальная машина отключена, то есть когда возникает проблема.   -  person GS Team    schedule 25.08.2017


Ответы (6)


Мы столкнулись с той же проблемой в нашем решении Visual Studio + Azure. Чтобы иметь возможность выполнять тесты, нам нужно более высокое разрешение на виртуальной машине, чем 1027 x 768. Но поскольку это Azure и вы платите за включенные машины, мы также хотим выключать их после каждого запуска, чтобы снизить стоимость ( особенно полезно, когда вы хотите немного увеличить масштаб).

Поэтому очень неприятно, что нет простого варианта, позволяющего загружать виртуальную машину в определенном (указанном) разрешении. Если есть что-то более простое, чем то, что я вам покажу, дайте мне знать, но я не нашел ничего. Поэтому я поддержал идею, упомянутую Несси. В качестве обходного пути мы сделали следующее.

Идеи возможного решения

По сути, мы использовали этот пост как руководство. Наиболее важными вещами, которые мы использовали, были учетные данные Windows и TERMSRV.

Наша установка

  • Сервер сборки Visual Studio
  • Четыре виртуальные машины Azure, одна машина - это сетка селена, остальные три - узлы.

Наше решение

Сначала мы позволяем серверу сборки запускать все машины в группе ресурсов (пока все хорошо). Затем мы создали сценарий Powershell, который запускается на сервере сборки для проверки узлов и ожидает, пока служба RDP станет доступной. Это было необходимо, поскольку может пройти до 10 минут, прежде чем мы увидим, что эта служба активна. И, наконец, мы запускаем Powershell на виртуальной машине selenium-grid-hub, чтобы установить RDP-подключения ко всем узлам с определенным разрешением.

Немного подробнее, чтобы убедиться, что все происходит автоматически и без необходимости ручного ввода:

  • Создание и экспорт / импорт сертификатов из каждого узла в хаб
  • Убедитесь, что учетные данные хранятся в диспетчере учетных данных> Windows Credentails (мы создали одного пользователя на всех машинах, чтобы немного облегчить жизнь)
  • Creating a script for checking if the RDP service is active
    • We call this script C:\Scripts\RDPServiceRunCheck.ps1 (see example below) in a VS build block with the arguments $(Password) $(Chrome-node) $(Username)
    • Где все эти аргументы были сохранены в переменных на сервере сборки
    • Вот код для скрипта на github
  • Creating a executable for starting a RDP in a certain resolution
    • We call this script C:\Scripts\Resolution.RDP.Remoting.exe (see example below) in a VS building block with the arguments "C:\Scripts\$(Chrome-node).rdp" 1600 1200
    • Где файл * .rdp для каждой машины хранился (заранее) в этой папке, а 1600 1200 - это разрешение, которое мы хотим установить
    • Вот код исполняемого файла на github.
person Mark Duivesteijn    schedule 20.12.2017

Это старый вопрос, поэтому подумал, что лучше выбросить его, если он кому-то поможет.

Существует задача Утилита разрешения экрана AzureDevOps Build / Release для изменения разрешения экрана машины с агентом. Полезно при запуске тестов пользовательского интерфейса, таких как Selenium, Coded UI и т. Д.

https://marketplace.visualstudio.com/items?itemName=ms-autotest.screen-resolution-utility-task

person Hicki    schedule 04.06.2019
comment
@Yoiku Я не знаком с локальной файловой системой TFS. Я считаю, что последняя версия теперь называется Azure DevOps Server. Если конвейеры выпуска управляются таким же образом, я предполагаю, что вы можете использовать задачи Marketplace? - person Hicki; 30.08.2019

Попробуйте запустить тест без головы. У меня была такая же проблема с TFS, и это единственный способ, которым это работает для меня.

args: [
    '--headless',
    '--window-size=1920,1040',
],
person Eugenios    schedule 19.11.2018

Попробуйте использовать приведенную ниже команду Powershell, это 100% рабочее решение.

Set-DisplayResolution -Width 1024 -Height 768 -Force
person Salman Arshad    schedule 11.03.2021
comment
идеальное решение! - person Anil Kumar B; 19.05.2021

Это ограничение виртуальной машины Azure, поскольку она использует RDP для установки разрешения экрана. Подробнее см. По этой ссылке: Почему невозможно увеличить или изменить разрешение экрана в виртуальной машине Azure.

Сеанс RDP использует драйвер дисплея RDP, а не видеоустройство шины виртуальной машины Microsoft.

Хотя функция RemoteFX позволяет использовать более широкий спектр графических рабочих нагрузок, чем обычный RDP, RemoteFX недоступен для виртуальных машин Azure.

person Eddie Chen - MSFT    schedule 30.08.2017
comment
есть идеи, как это исправить? Мы не хотим запускать наш автоматический тест при низком разрешении. - person GS Team; 30.08.2017
comment
@GSTeam Насколько я знаю, это никак нельзя изменить. Вы должны либо оставить RDP подключенным, либо развернуть тестовый агент на своем локальном компьютере. - person Eddie Chen - MSFT; 30.08.2017
comment
Есть ли способ поддерживать сеанс непрерывно? Благодарность - person GS Team; 30.08.2017
comment
@GSTeam Нет, если вы не держите RDP подключенным. - person Eddie Chen - MSFT; 31.08.2017

Я с той же проблемой. Поскольку есть способ указать разрешение для сеанса RDP (даже для виртуальной машины Azure), я создал UserVoice idea, чтобы получить эту желаемую функцию (укажите разрешение при запуске тестов пользовательского интерфейса с Задача «Выполнить функциональные тесты»).

А пока я использую обходной путь. Наша виртуальная машина сборки открывает сеанс RDP в желаемом разрешении (в настоящее время для покрытия различных размеров браузера этот сеанс работает с разрешением 4800x2700) на тестовую машину с учетной записью, с которой выполняются тесты пользовательского интерфейса. Когда есть активный сеанс, тесты пользовательского интерфейса просто подключаются к этому сеансу и используют текущее разрешение. Таким образом, у нас есть постоянный сеанс RDP от виртуальной машины сборки Azure к тестовой виртуальной машине Azure, но это работает :)

person Nessi    schedule 21.10.2017