ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live

- project.yml mit Bundle ev.mana.zitare + Widget + ShareExt-Targets
- ManaSwiftCore (ManaCore + ManaTokens) + ManaSwiftUI (ManaAuthUI)
  als Package-Dependencies via path:
- Pure SwiftUI für Native-Surfaces, WKWebView nur für Lese-Tabs
  (Hybrid-Sonderfall vs cards/memoro/manaspur, dokumentiert im
  Playbook ZITARE_NATIVE_GREENFIELD.md)
- Theme: paper-Variant aus @mana/themes
- ZitareAPI.healthCheck via direct URLSession (öffentlicher
  Endpoint, kein AuthenticatedTransport-Gate)
- 6/6 AppConfigTests + 1/1 UI-Smoke grün auf iPhone 16e Simulator
- Live: zitare-api.mana.how/healthz → HTTP/2 200

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till 2026-05-14 12:15:22 +02:00
commit 0bd59ed148
25 changed files with 1468 additions and 0 deletions

View file

@ -0,0 +1,17 @@
import XCTest
/// Phase ζ-0 Smoke-Test: App startet, Account-Tab erreichbar.
final class SmokeUITests: XCTestCase {
func test_appLaunches() {
let app = XCUIApplication()
app.launch()
// TabBar zeigt drei Tabs: Lesen / Erkunden / Konto. Lesen" ist
// der Default-Tab; sein Label ist sowohl im Tab-Item als auch
// im Placeholder-Body sichtbar beides genügt für den Smoke.
let lesenButton = app.buttons["Lesen"]
let lesenText = app.staticTexts["Lesen"]
XCTAssertTrue(
lesenButton.waitForExistence(timeout: 5) || lesenText.waitForExistence(timeout: 5)
)
}
}

View file

@ -0,0 +1,34 @@
import XCTest
@testable import ZitareNative
/// Phase ζ-0 Basis-Tests: Konfigurations-Konstanten sind konsistent
/// mit dem mana-Plattform-Setup (Bundle-ID, Keychain-Service,
/// Endpoint-Domains).
final class AppConfigTests: XCTestCase {
func test_authBaseURL_pointsToManaAuth() {
XCTAssertEqual(
AppConfig.manaAppConfig.authBaseURL.absoluteString,
"https://auth.mana.how"
)
}
func test_keychainService_matchesBundle() {
XCTAssertEqual(AppConfig.manaAppConfig.keychainService, "ev.mana.zitare")
}
func test_apiBaseURL_pointsToZitareApi() {
XCTAssertEqual(AppConfig.apiBaseURL.absoluteString, "https://zitare-api.mana.how")
}
func test_webBaseURL_isPublicSurface() {
XCTAssertEqual(AppConfig.webBaseURL.absoluteString, "https://zitare.com")
}
func test_appBaseURL_isManaHowSurface() {
XCTAssertEqual(AppConfig.appBaseURL.absoluteString, "https://zitare.mana.how")
}
func test_appGroup_matchesEntitlement() {
XCTAssertEqual(AppConfig.appGroup, "group.ev.mana.zitare")
}
}