1
1
import type { Meta , StoryObj } from "@storybook/react" ;
2
2
import { expect , spyOn , within } from "@storybook/test" ;
3
+ import type { Workspace , WorkspaceApp } from "api/typesGenerated" ;
3
4
import {
4
5
MockFailedWorkspace ,
5
6
MockStartingWorkspace ,
@@ -95,63 +96,68 @@ export const TerminatedBuildWithStatus: Story = {
95
96
} ,
96
97
} ;
97
98
98
- export const Active : Story = {
99
- decorators : [ withProxyProvider ( ) ] ,
100
- beforeEach : ( ) => {
101
- spyOn ( data , "fetchTask" ) . mockResolvedValue ( {
102
- prompt : "Create competitors page" ,
103
- workspace : {
104
- ...MockWorkspace ,
105
- latest_build : {
106
- ...MockWorkspace . latest_build ,
107
- resources : [
99
+ function activeWorkspace ( apps : WorkspaceApp [ ] ) : Workspace {
100
+ return {
101
+ ...MockWorkspace ,
102
+ latest_build : {
103
+ ...MockWorkspace . latest_build ,
104
+ resources : [
105
+ {
106
+ ...MockWorkspaceResource ,
107
+ agents : [
108
108
{
109
- ...MockWorkspaceResource ,
110
- agents : [
109
+ ...MockWorkspaceAgent ,
110
+ apps : [
111
+ ...apps ,
111
112
{
112
- ...MockWorkspaceAgent ,
113
- apps : [
114
- {
115
- ...MockWorkspaceApp ,
116
- id : "claude-code" ,
117
- display_name : "Claude Code" ,
118
- slug : "claude-code" ,
119
- icon : "/icon/claude.svg" ,
120
- statuses : [
121
- MockWorkspaceAppStatus ,
122
- {
123
- ...MockWorkspaceAppStatus ,
124
- id : "2" ,
125
- message : "Planning changes" ,
126
- state : "working" ,
127
- } ,
128
- ] ,
129
- } ,
130
- {
131
- ...MockWorkspaceApp ,
132
- id : "vscode" ,
133
- slug : "vscode" ,
134
- display_name : "VS Code Web" ,
135
- icon : "/icon/code.svg" ,
136
- } ,
113
+ ...MockWorkspaceApp ,
114
+ id : "claude-code" ,
115
+ display_name : "Claude Code" ,
116
+ slug : "claude-code" ,
117
+ icon : "/icon/claude.svg" ,
118
+ statuses : [
119
+ MockWorkspaceAppStatus ,
137
120
{
138
- ...MockWorkspaceApp ,
139
- slug : "zed" ,
140
- id : "zed" ,
141
- display_name : "Zed" ,
142
- icon : "/icon/zed.svg" ,
121
+ ...MockWorkspaceAppStatus ,
122
+ id : "2" ,
123
+ message : "Planning changes" ,
124
+ state : "working" ,
143
125
} ,
144
126
] ,
145
127
} ,
128
+ {
129
+ ...MockWorkspaceApp ,
130
+ id : "vscode" ,
131
+ slug : "vscode" ,
132
+ display_name : "VS Code Web" ,
133
+ icon : "/icon/code.svg" ,
134
+ } ,
135
+ {
136
+ ...MockWorkspaceApp ,
137
+ slug : "zed" ,
138
+ id : "zed" ,
139
+ display_name : "Zed" ,
140
+ icon : "/icon/zed.svg" ,
141
+ } ,
146
142
] ,
147
143
} ,
148
144
] ,
149
145
} ,
150
- latest_app_status : {
151
- ...MockWorkspaceAppStatus ,
152
- app_id : "claude-code" ,
153
- } ,
154
- } ,
146
+ ] ,
147
+ } ,
148
+ latest_app_status : {
149
+ ...MockWorkspaceAppStatus ,
150
+ app_id : "claude-code" ,
151
+ } ,
152
+ } ;
153
+ }
154
+
155
+ export const Active : Story = {
156
+ decorators : [ withProxyProvider ( ) ] ,
157
+ beforeEach : ( ) => {
158
+ spyOn ( data , "fetchTask" ) . mockResolvedValue ( {
159
+ prompt : "Create competitors page" ,
160
+ workspace : activeWorkspace ( [ ] ) ,
155
161
} ) ;
156
162
} ,
157
163
play : async ( { canvasElement } ) => {
@@ -166,3 +172,20 @@ export const Active: Story = {
166
172
expect ( claudeIframe ) . toBeVisible ( ) ;
167
173
} ,
168
174
} ;
175
+
176
+ export const ActivePreview : Story = {
177
+ decorators : [ withProxyProvider ( ) ] ,
178
+ beforeEach : ( ) => {
179
+ spyOn ( data , "fetchTask" ) . mockResolvedValue ( {
180
+ prompt : "Create competitors page" ,
181
+ workspace : activeWorkspace ( [
182
+ {
183
+ ...MockWorkspaceApp ,
184
+ slug : "preview" ,
185
+ id : "preview" ,
186
+ display_name : "Preview" ,
187
+ } ,
188
+ ] ) ,
189
+ } ) ;
190
+ } ,
191
+ } ;
0 commit comments