diff --git a/package.json b/package.json index d3188d483a..646b9e43c8 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,6 @@ "@backstage/repo-tools": "workspace:*", "@changesets/cli": "^2.14.0", "@octokit/rest": "^19.0.3", - "@playwright/test": "^1.32.3", "@spotify/eslint-plugin": "^14.1.3", "@spotify/prettier-config": "^14.0.0", "@techdocs/cli": "workspace:*", diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 0bcd8ce33c..151c8568d5 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -445,7 +445,7 @@ export class DatabaseTaskStore implements TaskStore { ids: string[]; }>; // (undocumented) - saveCheckpoint(options: { + saveTaskState(options: { taskId: string; state?: | { @@ -661,7 +661,7 @@ export interface TaskStore { ids: string[]; }>; // (undocumented) - saveCheckpoint?(options: { + saveTaskState?(options: { taskId: string; state?: { [key: string]: diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.test.ts index 4c0eb94c82..deb72fb7d2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.test.ts @@ -188,4 +188,31 @@ describe('DatabaseTaskStore', () => { await store.shutdownTask({ taskId }); }).rejects.toThrow(ConflictError); }); + + it('should store checkpoints and retrieve task state', async () => { + const { store } = await createStore(); + const { taskId } = await store.createTask({ + spec: {} as TaskSpec, + createdBy: 'me', + }); + + await store.saveTaskState({ + taskId, + state: { + 'repo.create': { + status: 'success', + value: { repoUrl: 'https://github.com/backstage/backstage.git' }, + }, + }, + }); + + const state = await store.getTaskState({ taskId }); + + expect(state).toStrictEqual({ + 'repo.create': { + status: 'success', + value: { repoUrl: 'https://github.com/backstage/backstage.git' }, + }, + }); + }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index db890c330e..263fe3d435 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -421,7 +421,7 @@ export class DatabaseTaskStore implements TaskStore { : undefined; } - async saveCheckpoint(options: { + async saveTaskState(options: { taskId: string; state?: | { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 0404f143de..cc958b35b3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -124,7 +124,7 @@ export class TaskManager implements TaskContext { } else { this.task.state = { [key]: value }; } - await this.storage.saveCheckpoint?.({ + await this.storage.saveTaskState?.({ taskId: this.task.taskId, state: this.task.state, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 45c4774299..d0bb48f4f2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -206,7 +206,7 @@ export interface TaskStore { | undefined >; - saveCheckpoint?(options: { + saveTaskState?(options: { taskId: string; state?: { [key: string]: diff --git a/yarn.lock b/yarn.lock index 6379617840..0d58ba4587 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41307,7 +41307,6 @@ __metadata: "@changesets/cli": ^2.14.0 "@manypkg/get-packages": ^1.1.3 "@octokit/rest": ^19.0.3 - "@playwright/test": ^1.32.3 "@spotify/eslint-plugin": ^14.1.3 "@spotify/prettier-config": ^14.0.0 "@techdocs/cli": "workspace:*"