@@ -103,6 +103,13 @@ function wrapRenderCalls(code: string): string {
103103 . join ( "\n" ) ;
104104}
105105
106+ /**
107+ * Normalize imports to use double quotes (prettier standard)
108+ */
109+ function normalizeImport ( importStatement : string ) : string {
110+ return importStatement . replace ( / ' / g, '"' ) ;
111+ }
112+
106113/**
107114 * Generate a complete test file from extracted blocks
108115 */
@@ -122,7 +129,7 @@ function generateTestFile(tests: ExtractedTest[]): string {
122129 // Collect imports
123130 if ( inImports && ( trimmed . startsWith ( "import " ) || trimmed === "" ) ) {
124131 if ( trimmed ) {
125- imports . add ( trimmed ) ;
132+ imports . add ( normalizeImport ( trimmed ) ) ;
126133 }
127134 continue ;
128135 }
@@ -148,34 +155,28 @@ function generateTestFile(tests: ExtractedTest[]): string {
148155 }
149156
150157 // Add required imports for provider wrapper
151- imports . add ( "import { NimbusProvider } from '@commercetools/nimbus';" ) ;
158+ imports . add ( 'import type { ReactNode } from "react";' ) ;
159+ imports . add ( 'import { NimbusProvider } from "@commercetools/nimbus";' ) ;
152160
153161 // Combine into complete file with wrapper utility
154162 const importsArray = Array . from ( imports ) . sort ( ) ;
155163 const fileContent = [
156164 "// Auto-generated test file from .dev.mdx documentation" ,
157165 "// DO NOT EDIT - This file is generated by validate-docs-tests.ts" ,
158166 "" ,
167+ "import { describe, it, expect, vi } from 'vitest';" ,
159168 ...importsArray ,
160169 "" ,
161170 "// Wrapper utility to provide NimbusProvider context" ,
162171 "function renderWithProvider(ui: React.ReactElement) {" ,
163- " const result = render(" ,
164- " <NimbusProvider>" ,
165- " {ui}" ,
166- " </NimbusProvider>" ,
167- " );" ,
168- " " ,
172+ " const result = render(<NimbusProvider>{ui}</NimbusProvider>);" ,
173+ "" ,
169174 " // Wrap rerender to also use provider" ,
170175 " const originalRerender = result.rerender;" ,
171- " result.rerender = (rerenderUi: React.ReactElement) => {" ,
172- " return originalRerender(" ,
173- " <NimbusProvider>" ,
174- " {rerenderUi}" ,
175- " </NimbusProvider>" ,
176- " );" ,
176+ " result.rerender = (rerenderUi: ReactNode) => {" ,
177+ " return originalRerender(<NimbusProvider>{rerenderUi}</NimbusProvider>);" ,
177178 " };" ,
178- " " ,
179+ "" ,
179180 " return result;" ,
180181 "}" ,
181182 "" ,
@@ -250,6 +251,17 @@ async function main() {
250251 `📝 Generated test file: ${ relative ( process . cwd ( ) , tempTestFile ) } \n`
251252 ) ;
252253
254+ // Format with ESLint --fix (runs Prettier automatically)
255+ console . log ( "🎨 Formatting generated file...\n" ) ;
256+ try {
257+ execSync ( `pnpm eslint ${ tempTestFile } --fix` , {
258+ cwd : process . cwd ( ) ,
259+ stdio : "pipe" , // Suppress output
260+ } ) ;
261+ } catch {
262+ console . warn ( "⚠️ Could not format file (continuing anyway)" ) ;
263+ }
264+
253265 // Run tests with Vitest
254266 console . log ( "🧪 Running extracted tests...\n" ) ;
255267 try {
0 commit comments