import XCTest

final class VocabGridTests: XCTestCase {

    override func setUpWithError() throws {
        continueAfterFailure = false
    }

    /// Verifies the chapter reader renders vocab tables as a paired Spanish↔English grid.
    func testChapter4VocabGrid() throws {
        let app = XCUIApplication()
        app.launchArguments += ["-onboardingComplete", "YES"]
        app.launch()

        app.tabBars.buttons["Course"].tap()

        let textbookRow = app.buttons.containing(NSPredicate(
            format: "label CONTAINS[c] 'Complete Spanish'"
        )).firstMatch
        XCTAssertTrue(textbookRow.waitForExistence(timeout: 5))
        textbookRow.tap()

        let ch4 = app.buttons["textbook-chapter-row-4"]
        XCTAssertTrue(ch4.waitForExistence(timeout: 3))
        ch4.tap()

        attach(app, name: "01-ch4-top")

        // Tap the first vocab disclosure — "Vocabulary (N items)"
        let vocabButton = app.buttons.matching(NSPredicate(
            format: "label BEGINSWITH 'Vocabulary ('"
        )).firstMatch
        XCTAssertTrue(vocabButton.waitForExistence(timeout: 3))
        vocabButton.tap()
        Thread.sleep(forTimeInterval: 0.4)

        attach(app, name: "02-ch4-vocab-open")

        // Scroll a little and screenshot a deeper vocab — numbers table is
        // typically a few screens down in chapter 4.
        app.swipeUp(velocity: .fast)
        app.swipeUp(velocity: .fast)
        attach(app, name: "03-ch4-deeper")
    }

    private func attach(_ app: XCUIApplication, name: String) {
        let s = app.screenshot()
        let a = XCTAttachment(screenshot: s)
        a.name = name
        a.lifetime = .keepAlways
        add(a)
    }
}
