merge: test/activation-e2e — Maestro activation E2E + mock opencode server (reviewed: APPROVE after fixes)

This commit is contained in:
engineer
2026-07-16 17:24:32 -07:00
10 changed files with 708 additions and 3 deletions

View File

@@ -334,6 +334,7 @@ export default function SessionsScreen() {
<TouchableOpacity
style={[styles.addButton, isDark && styles.addButtonDark]}
onPress={() => router.push("/connection/add")}
testID="add-connection-button"
>
<Text style={[styles.addButtonText, isDark && styles.addButtonTextDark]}>Add Connection</Text>
</TouchableOpacity>
@@ -351,9 +352,10 @@ export default function SessionsScreen() {
onPress={() => dirSheetRef.current?.expand()}
onLongPress={() => router.push("/(tabs)/connections")}
activeOpacity={0.7}
testID="connection-status-bar"
>
<View style={styles.connectionInfo}>
<View style={[styles.connectionDot, { backgroundColor: "#22c55e" }]} />
<View style={[styles.connectionDot, { backgroundColor: "#22c55e" }]} testID="connection-status-dot" />
<Text style={[styles.connectionName, isDark && styles.textDark]} numberOfLines={1}>
{activeConnection.name}
</Text>
@@ -409,6 +411,7 @@ export default function SessionsScreen() {
onPress={onFabPress}
onLongPress={onFabLongPress}
delayLongPress={500}
testID="new-session-fab"
>
<Ionicons name="add" size={28} color={isDark ? "#0a0a0a" : "#ffffff"} />
</TouchableOpacity>

View File

@@ -185,6 +185,7 @@ export default function AddConnectionScreen() {
autoCapitalize="none"
autoCorrect={false}
keyboardType="url"
testID="connect-ip-input"
/>
<Text style={[styles.ipColon, isDark && styles.textDark]}>:</Text>
<TextInput
@@ -194,6 +195,7 @@ export default function AddConnectionScreen() {
value={port}
onChangeText={setPort}
keyboardType="number-pad"
testID="connect-port-input"
/>
</View>
@@ -216,6 +218,7 @@ export default function AddConnectionScreen() {
value={password}
onChangeText={setPassword}
secureTextEntry
testID="connect-password-input"
/>
<Text style={[styles.usernameHint, isDark && styles.hintDark]}>
Username defaults to <Text style={styles.code}>opencode</Text>. Custom username? Use{" "}
@@ -230,6 +233,7 @@ export default function AddConnectionScreen() {
style={[styles.connectButton, isDark && styles.connectButtonDark]}
onPress={handleQuickConnect}
disabled={isConnecting}
testID="connect-submit-button"
>
{isConnecting ? (
<ActivityIndicator size="small" color={isDark ? "#0a0a0a" : "#ffffff"} />

View File

@@ -640,6 +640,7 @@ export default function SessionScreen() {
editable={!speech.listening}
multiline
maxLength={10000}
testID="chat-message-input"
/>
{/* Stop button: only when busy and no input */}
{isSending && !input.trim() && attachments.length === 0 && !speech.listening && (
@@ -661,7 +662,7 @@ export default function SessionScreen() {
)}
{/* Send button: when there's input */}
{!speech.listening && (input.trim() || attachments.length > 0) && (
<TouchableOpacity style={s.sendBtn} onPress={handleSend}>
<TouchableOpacity style={s.sendBtn} onPress={handleSend} testID="chat-send-button">
<Ionicons name="send" size={20} color="#ffffff" />
</TouchableOpacity>
)}