Снимки экрана не включены в пакеты xcresult после успешных тестов UITest в Xcode 16.1 на MacOS Sequoia.IOS

Программируем под IOS
Ответить
Anonymous
 Снимки экрана не включены в пакеты xcresult после успешных тестов UITest в Xcode 16.1 на MacOS Sequoia.

Сообщение Anonymous »

Я использую Xcode 16.1 (16B40) на MacOS Sequoia 15.1.0 с помощью Macbook pro M1 Max
Я разрабатываю приложение для iOS 17 и 18 с использованием SwiftUI. Для этого я создал UITests сделайте скриншоты для AppStore на симуляторе.
Тесты проходят хорошо, и все они успешны.
Проблема возникает, когда я пытаюсь получите файлы снимков экрана из файлов xcresult после теста. Внутри него нет ни одного снимка экрана.
Я нашел папку с данными и файл Info.plist. В папке data много файлов с этим паттерном data.03zD4C6IGFFthK14NwA8mNvcwFHT16g6Tl40Tl1YmBC1bNh6d0YIcnWKyUaQPDXoa8fYo6C3Xcv8xvMtE3_NEXA== и другие файлы с этим паттерном. refs.03zD4C6IGFFthK14NwA8mNvcwFHT16g6Tl40Tl1YmBC1bNh6d0YIcnWKyUaQPDXoa8fYo6C3Xcv8xvMtE3_NEXA==
Хорошо, я попробовал использовать fastlane для автоматизации снимков экрана, но проблема все еще присутствует. В файлах xcresult нет PNG-файлов.
У меня не было проблем с выполнением этого действия (получение снимков экрана из файла xcresult) в предыдущих версиях MacOS и Xcode на моем текущем компьютере.
Я только что обновил свой компьютер до MacOS Sequoia 15.1.1, и проблема все еще существует.
Честно говоря, я не знаю, как исправить эту ситуацию.
Честно говоря, я не знаю, как исправить эту ситуацию.
Честно говоря, я не знаю, как исправить эту ситуацию.
Честно говоря, я не знаю, как исправить эту ситуацию.
Честно говоря, я не знаю, как исправить эту ситуацию.
р>
С Xcode 15 у меня не было никаких проблем, но я не уверен, что Xcode 16.0 работал без проблем, потому что в те месяцы мне не нужно было использовать эту функцию
Вот мой код для UITest:

Код: Выделить всё

import XCTest

final class ScreenshotsUITests: XCTestCase {
let app = XCUIApplication()
let device = "iPhone16"
override func setUpWithError() throws {
continueAfterFailure = true

}

override func tearDownWithError() throws {}

@MainActor
func testEnglishScreens() throws {
let lang = "en"
app.launchArguments.append("UITestMode")
app.launchArguments += ["-AppleLanguages", "(en)"]
app.launchArguments += ["-AppleLocale", "en_US"]
app.launch()
executeTestsForMenus(lang: lang, backLabel: "Back")
executeTestForMatch(lang: lang)
}

@MainActor
func testSpanishScreens() throws {
let lang = "es"
app.launchArguments.append("UITestMode")
app.launchArguments += ["-AppleLanguages", "(es)"]
app.launchArguments += ["-AppleLocale", "es_ES"]
app.launch()
executeTestsForMenus(lang: lang, backLabel: "Atrás")
executeTestForMatch(lang: lang)
}

private func executeTestForMatch(lang: String) {
let startButton = app.buttons["start-button"]
startButton.tap()

let key4 = app.buttons["key-4"]
XCTAssertTrue(key4.waitForExistence(timeout: 30), "Key 4 in match screen is not found")
key4.tap()
let key2 = app.buttons["key-2"]
XCTAssertTrue(key2.exists, "Key 2 in match screen is not found")
key2.tap()
makeScreenShot("playing", lang: lang)
let closeButton = app.buttons["close-button"]
XCTAssertTrue(closeButton.exists, "Close button in match screen is not found")
closeButton.tap()
}

private func executeTestsForMenus(lang: String, backLabel: String) {
let mainHeader = app.staticTexts["Math match"]
XCTAssertTrue(mainHeader.exists, "Header in main screen is not found")
makeScreenShot("mainMenu", lang: lang)

let settingsButton = app.buttons["settings-button"]
XCTAssertTrue(settingsButton.exists, "Settings button in main screen is not found")
settingsButton.tap()
makeScreenShot("Settings", lang: lang)
let backButton = app.buttons[backLabel]
XCTAssertTrue(backButton.exists, "Back button in match screen is not found")
backButton.tap()

let helpButton = app.buttons["help-button"]
XCTAssertTrue(helpButton.exists, "Help button in main screen is not found")
helpButton.tap()
makeScreenShot("Help", lang: lang)
backButton.tap()
let scoreButton = app.buttons["score-button"]
XCTAssertTrue(scoreButton.exists, "Scores button in main screen is not found")
scoreButton.tap()
makeScreenShot("Scores", lang: lang)
backButton.tap()
let playButton = app.buttons["play-button"]
XCTAssertTrue(playButton.exists, "Play button in main screen is not found")
playButton.tap()
makeScreenShot("matchBuilder", lang: lang)
let startButton = app.buttons["start-button"]
XCTAssertTrue(startButton.exists, "Start button in match builder screen is not found")
}

private func makeScreenShot(_ name: String, lang: String) {
takeScreenshot(app, named:  "\(lang)-\(name)-\(device)")
}
}

import XCTest

extension XCTestCase {
func takeScreenshot(_ app: XCUIApplication, named name: String, fullScreen: Bool = false) {
let screenshot: XCUIScreenshot
if fullScreen {
screenshot = app.windows.firstMatch.screenshot()
} else {
screenshot = XCUIScreen.main.screenshot()
}
let screenshotAttachment = XCTAttachment(
uniformTypeIdentifier: "public.png",
name: "screenshot-\(name).png",
payload: screenshot.pngRepresentation,
userInfo: nil)
screenshotAttachment.lifetime = .keepAlways
add(screenshotAttachment)
}
}
а вот содержимое моего файла плана тестирования:

Код: Выделить всё

{
"configurations" : [
{
"id" : "35BC7C0B-9A5A-4027-9F30-36958C4C1AAF",
"name" : "Test Scheme Action",
"options" : {
"preferredScreenCaptureFormat" : "screenshot",
"testExecutionOrdering" : "random",
"uiTestingScreenshotsLifetime" : "keepAlways",
"userAttachmentLifetime" : "keepAlways"
}
}
],
"defaultOptions" : {
"targetForVariableExpansion" : {
"containerPath" : "container:myAppProject.xcodeproj",
"identifier" : "B27D1B022CA00314001A259B",
"name" : "MyAppProject"
}
},
"testTargets" : [
{
"parallelizable" : true,
"target" : {
"containerPath" : "container:MyAppProject.xcodeproj",
"identifier" : "B27D1B122CA00315001A259B",
"name" : "MyAppProjectTests"
}
},
{
"parallelizable" : true,
"target" : {
"containerPath" : "container:MyAppProject.xcodeproj",
"identifier" : "B27D1B1C2CA00315001A259B",
"name" : "MyAppProjectUITests"
}
}
],
"version" : 1
}
Я тестировал старые проекты на своем компьютере, и эти проекты имеют ту же проблему с файлами снимков экрана в пакетах xcresult.
Я мог бы проверить отчеты в Xcode с использованием общего глаза (я слепой) и в отчетах об испытаниях скриншоты доступны, и я могу их экспортировать, но их нет в пакетах xcresult, и я не могу использовать автоматические инструменты для создания своих скриншотов для AppStore :-(
Я не знаю, связана ли проблема с моей машиной, моим Xcode, MacOS или чем-то еще. Я не знаю, как решить эту проблему.
Пожалуйста, можете. кто-нибудь мне поможет?
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-xcode-1
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»