t.me/atinfo_chat Telegram группа по автоматизации тестирования

Логи браузера со вкладок Network и Console и добавление их в Allure

Теги: #<Tag:0x00007f74878c0d40> #<Tag:0x00007f74878c0a70> #<Tag:0x00007f74878c0930> #<Tag:0x00007f74878c07f0> #<Tag:0x00007f74878c06d8> #<Tag:0x00007f74878c0520> #<Tag:0x00007f74878c0390> #<Tag:0x00007f74878c02c8> #<Tag:0x00007f74878c0200>

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

а так если тест упал, то в нём будет видно типо тут скриншот, а тут логи

прошу обратить сюда внимание, если вам логи не нужны - не пытайтесь тогда с ними работать

так-то логи помогают понять, где ошибка:

  • в самом тесте
  • на бэке
  • на ui

да и вообще, у меня на проекте в баг желательно прикладывать реквест айди, скрины, ссылки на тз, .har файл из браузера

так что получить что-то ещё на этапе упавшего автотеста - весьма неплохо

Это неудобно, если не пользоваться вот этим пакетом: https://github.com/Noksa/Allure.NUnit
А если пользоваться, то достаточно передать лямбдой что делать в случае если в шаге случилась ошибка :slight_smile:

Александр, вам и так памятник надо при жизни ставить за развитие дотнет веб тестирования

1 Симпатия

Всё правильно вы говорите.

Я тоже разработчиков приобщил к тому, чтобы они смотрели отчеты аллюра.
В итоге для них очень удобно, если есть консольный лог браузера, который даст им информацию о том, где проблемное место.
А так же прикладывается видос теста, если у него статус не passed.
А все эти разговоры о том, что автотестирование не должно этим заниматься - ну хз.
Прикрутить логи браузера - 5-10 минут.
Почему бы это не сделать для упрощения поиска ошибок для своих коллег?

Я когда слышу такие заявления как человек написал выше, понимаю что нет там общей цели в коллективе.
Обычно общая цель - сделать продукт качественным и быстро доставляемым к конечному пользователю.
А у кого-то цели видимо другие на работе.

А у кого-то цели видимо другие на работе.

Разделять сферы ответственности. И устанавливать рамки.

1 Симпатия

опишите ваш flow разработки ui и как вы, будучи тестировщиком, в нем участвуете? я правильно понимаю, что разработчики как-то автоматически получают информацию о том, чем вы занимаетесь в браузере?

У меня как-то проще получилось)

Вначале инициализации драйвера

LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
capabilities.setCapability("goog:loggingPrefs", logPrefs);

Затем прикручиваю логи к allure

 @Attachment(value = "Browser network log", type = "text/plain")
    public static String ABrowserLogNetwork() {
        LogEntries logs = WebDriverRunner.getWebDriver().manage().logs().get("performance");
        String logsBrowser = "";

        for (LogEntry le : logs) {
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            JsonParser jp = new JsonParser();
            JsonElement je = jp.parse(le.getMessage());

            //String prettyJsonString = gson.toJson(je);
            if (gson.toJson(je).contains("webSocketFrame"))  logsBrowser = logsBrowser + gson.toJson(je);


        }

        return logsBrowser;
    }

    @Attachment(value = "Browser console log", type = "text/plain")
    public static String ABrowserLogConsole() {

        List logList = Selenide.getWebDriverLogs(LogType.BROWSER);
        StringBuilder sb = new StringBuilder();

        for(Object line : logList) {
            sb.append(line);
            sb.append("\n");
        }

        return sb.toString();
    }

И вызываю эти функции после тестов)

я игрался с этими перформанс логами, и у меня не получилось, может не так гуглил

у вас в логах там с кодами ответов и вот этим всем добром?

а, так ещё и джава, эти советы я видел, у меня не взлетало почему-то

1 Симпатия

У меня это выглядит вот так. Поговорил с разработчиками их устраивают такие логи)
Единственный нюанс, на firefox network ничего не возвращает

1 Симпатия

Странно, у меня довольно быстро взлетело

Вопрос, каким образом получать Performance лог только с конкретным типом, например, xhr?

конкретно в моём кейсе у меня json, в котором нужное я ищу по jpath

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

а каким образом получать Response со вкладочки в Network. В общей куче их просто нет

Всё есть и response тоже. Попробуй мой вариант

Logs

Log allure

извиняюсь если не 100% по теме в хроме можно было
полуяать перфораманс через запуск кода

надеюсь кому нибудь пригодится

есть вариант для дотнет

метод webSocketFrame отсутствует, а в тех что есть, нет ответа нужного

Это не метод, это слово, по которому я фильтровал логи, которые мне нужны!

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

2020-07-14_13-15-11

Мне сказали разработчики, по какому значению фильтровать. Может у вас как-то по другому называется. Спросите у разработчиков, может они вам подскажут