@@ -99,3 +99,59 @@ export function logTestEnvironment(): void {
99
99
console . log ( 'Architecture:' , process . arch ) ;
100
100
console . log ( '========================' ) ;
101
101
}
102
+
103
+ /**
104
+ * Monitor workspace setup progress for integration tests
105
+ * @param setupType Type of setup being monitored (e.g., "workspace", "git workspace")
106
+ */
107
+ export async function monitorWorkspaceSetup ( setupType : string = "workspace" ) : Promise < void > {
108
+ console . log ( `⏳ Monitoring ${ setupType } setup progress...` ) ;
109
+ let waitTime = 0 ;
110
+ const checkInterval = 3000 ;
111
+ let initialSetupComplete = false ;
112
+ let pythonEnvironmentSetup = false ;
113
+ let westUpdated = false ;
114
+ let packagesInstalled = false ;
115
+
116
+ while ( ! packagesInstalled ) {
117
+ const extension = vscode . extensions . getExtension ( "mylonics.zephyr-ide" ) ;
118
+ let wsConfig = null ;
119
+
120
+ if ( extension ?. isActive && extension . exports ?. getWorkspaceConfig ) {
121
+ wsConfig = extension . exports . getWorkspaceConfig ( ) ;
122
+ }
123
+
124
+ if ( wsConfig ) {
125
+ if ( ! initialSetupComplete && wsConfig . initialSetupComplete ) {
126
+ console . log ( " ✅ Initial setup completed - west.yml created" ) ;
127
+ initialSetupComplete = true ;
128
+ }
129
+
130
+ if ( ! westUpdated && wsConfig . activeSetupState ?. westUpdated ) {
131
+ console . log ( " ✅ West updated - All repos downloaded" ) ;
132
+ westUpdated = true ;
133
+ }
134
+
135
+ if ( ! pythonEnvironmentSetup && wsConfig . activeSetupState ?. pythonEnvironmentSetup ) {
136
+ console . log ( " ✅ Python environment setup completed" ) ;
137
+ pythonEnvironmentSetup = true ;
138
+ }
139
+
140
+ if ( wsConfig . activeSetupState ?. packagesInstalled ) {
141
+ packagesInstalled = true ;
142
+ console . log ( " ✅ Packages installed completed" ) ;
143
+ console . log ( `🎉 All ${ setupType } setup stages completed!` ) ;
144
+ break ;
145
+ }
146
+ }
147
+
148
+ // Progress update every 30 seconds
149
+ if ( waitTime % 30000 === 0 && waitTime > 0 ) {
150
+ const completedStages = [ initialSetupComplete , pythonEnvironmentSetup , westUpdated , packagesInstalled ] . filter ( Boolean ) . length ;
151
+ console . log ( `⏳ ${ setupType } setup in progress... (${ waitTime / 1000 } s elapsed, ${ completedStages } /4 stages completed)` ) ;
152
+ }
153
+
154
+ await new Promise ( ( resolve ) => setTimeout ( resolve , checkInterval ) ) ;
155
+ waitTime += checkInterval ;
156
+ }
157
+ }
0 commit comments