@TestOn('vm') library; import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:xworkmate/runtime/assistant_artifacts.dart'; import 'package:xworkmate/runtime/desktop_thread_artifact_service.dart'; import 'package:xworkmate/runtime/runtime_models.dart'; void main() { final service = DesktopThreadArtifactService(); test( 'DesktopThreadArtifactService lists files and previews markdown/html', () async { final root = await Directory.systemTemp.createTemp( 'xworkmate-artifact-service-', ); addTearDown(() async { if (await root.exists()) { await root.delete(recursive: true); } }); final markdownFile = File('${root.path}/README.md'); final htmlFile = File('${root.path}/preview.html'); final binaryFile = File('${root.path}/archive.bin'); await markdownFile.writeAsString('# Demo\n\nartifact preview'); await htmlFile.writeAsString( '

Preview

', ); await binaryFile.writeAsBytes(const [1, 2, 3, 4]); final snapshot = await service.loadSnapshot( workspaceRef: root.path, workspaceRefKind: WorkspaceRefKind.localPath, ); expect( snapshot.fileEntries.map((item) => item.relativePath), containsAll(['README.md', 'preview.html', 'archive.bin']), ); final markdownEntry = snapshot.fileEntries.firstWhere( (item) => item.relativePath == 'README.md', ); final htmlEntry = snapshot.fileEntries.firstWhere( (item) => item.relativePath == 'preview.html', ); final binaryEntry = snapshot.fileEntries.firstWhere( (item) => item.relativePath == 'archive.bin', ); final markdownPreview = await service.loadPreview( entry: markdownEntry, workspaceRef: root.path, workspaceRefKind: WorkspaceRefKind.localPath, ); expect(markdownPreview.kind, AssistantArtifactPreviewKind.markdown); expect(markdownPreview.content, contains('artifact preview')); final htmlPreview = await service.loadPreview( entry: htmlEntry, workspaceRef: root.path, workspaceRefKind: WorkspaceRefKind.localPath, ); expect(htmlPreview.kind, AssistantArtifactPreviewKind.html); expect(htmlPreview.content, contains('

Preview

')); expect(htmlPreview.content, isNot(contains('