Тестирование снимков Swift создает другое изображение на CIIOS

Программируем под IOS
Ответить
Anonymous
 Тестирование снимков Swift создает другое изображение на CI

Сообщение Anonymous »

Я использую быстрое тестирование моментальных снимков Point Free для захвата изображений представлений SwiftUI.
Пока это работает хорошо, но когда я использую SwiftUI FocusState, я получаю разные выходные данные на CI по сравнению с моим локальным компьютером.
На моей локальной машине отображается синее кольцо фокусировки, но на CI — нет. Итак, на моей локальной машине закрытие onAppear выполняется, и цикл рендеринга завершится до создания снимка. В CI снимок, вероятно, делается до завершения цикла рендеринга или даже до выполнения закрытия onAppear.

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

struct MyView: View {
@FocusState var isFocused: Bool
@State var text: String = ""

var body: some View {
TextField("", text: $text)
.focused($isFocused)
.padding()
.overlay(
RoundedRectangle(cornerRadius: 12)
.stroke(isFocused ? Color.blue : Color.gray)
)
.onAppear {
isFocused = true
}
.padding()
}
}
Это мой тест:

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

import SnapshotTesting
import SwiftUI
import Testing

@testable import MyModule

@MainActor
@Suite(.snapshots)
struct MyViewTests {

@Test
func defaultState() {
let view = MyView()
assertSnapshot(of: view, as: .image)
}
}
Я знаю, что могу запретить установку фокуса на true в onAppear в тестах (и в CI), чтобы получить согласованный результат, но я хочу, чтобы он выполнялся. Как мне это гарантировать?


Подробнее здесь: https://stackoverflow.com/questions/797 ... mage-on-ci
Ответить

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

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

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

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

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