Skip to content

Commit a789fbd

Browse files
authored
Fix decoding payloads for user metadata (#3328)
* add workflow with user metadata * base64 decode user metadata payloads and remove unused component * fix imports * fix workflow runner for ci * reorganize test workflows and add test for user metadata * fix scripts * don't wait for wf results in e2e test setup * add better tests * add error case test
1 parent 4e32d23 commit a789fbd

15 files changed

Lines changed: 320 additions & 229 deletions

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@
7373
"stylelint": "stylelint \"src/**/*.{css,postcss,svelte}\"",
7474
"stylelint:fix": "stylelint --fix \"src/**/*.{css,postcss,svelte}\"",
7575
"generate:locales": "esno scripts/generate-locales.ts",
76-
"e2e-workflows": "esno scripts/e2e-workflows.ts",
77-
"payload-coverage-workflow": "esno scripts/payload-coverage-workflow.ts",
76+
"run-workflows": "esno scripts/run-workflows.ts",
7877
"audit:tailwind": "esno scripts/audit-tailwind-colors",
7978
"audit:holocene-props": "esno scripts/generate-holocene-props.ts",
8079
"validate:versions": "./scripts/validate-versions.sh"

scripts/payload-coverage-workflow.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { connect, startWorkflows } from '../temporal/client';
2-
import { runWorkerUntil } from '../temporal/workers';
2+
import { runWorkerUntil } from '../temporal/worker';
33

44
async function main() {
55
const client = await connect();

src/lib/components/user-metadata.svelte

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,20 @@
1010
let { summary, details }: Props = $props();
1111
</script>
1212

13-
<div class="flex h-full flex-1 flex-col bg-primary">
13+
<div data-testid="user-metadata" class="flex h-full flex-1 flex-col bg-primary">
1414
<div>
1515
<div class="surface-information w-full px-6 py-2">
1616
<h3 data-testid="user-metadata-summary-heading">
1717
{translate('workflows.summary')}
1818
</h3>
1919
</div>
2020
{#if summary}
21-
<Markdown class="p-3" overrideTheme="primary" content={summary} />
21+
<Markdown
22+
frameId="user-metadata-summary"
23+
class="p-3"
24+
overrideTheme="primary"
25+
content={summary}
26+
/>
2227
{:else}
2328
<div class="py-6 pl-6 text-secondary/70">
2429
<p class="text-sm italic">
@@ -34,7 +39,12 @@
3439
</h3>
3540
</div>
3641
{#if details}
37-
<Markdown class="p-3" overrideTheme="primary" content={details} />
42+
<Markdown
43+
frameId="user-metadata-details"
44+
class="p-3"
45+
overrideTheme="primary"
46+
content={details}
47+
/>
3848
{:else}
3949
<div class="py-6 pl-6 text-secondary/70">
4050
<p class="text-sm italic">

src/lib/components/workflow/metadata/metadata-events.svelte

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/lib/components/workflow/metadata/workflow-current-details.svelte

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
</div>
8686
</div>
8787
{#key currentDetails}
88-
<Markdown class="p-3" overrideTheme="primary" content={currentDetails} />
88+
<Markdown
89+
frameId="user-metadata-current-details"
90+
class="p-3"
91+
overrideTheme="primary"
92+
content={currentDetails}
93+
/>
8994
{/key}
9095
</div>

src/lib/holocene/markdown-editor/preview.svelte

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,15 @@
1616
| 'details'
1717
| ''
1818
| undefined;
19+
frameId?: string;
1920
}
2021
21-
let { content, class: className = '', overrideTheme = '' }: Props = $props();
22+
let {
23+
content,
24+
class: className = '',
25+
overrideTheme = '',
26+
frameId = '',
27+
}: Props = $props();
2228
2329
let iframe: HTMLIFrameElement | null = $state(null);
2430
@@ -65,5 +71,6 @@
6571
title="output"
6672
class="w-full"
6773
src={previewPath}
74+
id={frameId}
6875
></iframe>
6976
</section>

src/lib/utilities/decode-payload.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ export const decodeUserMetadata = async (
211211
try {
212212
const data = await decodePayloadsWithRemoteCodec([payload]);
213213
const result = data[0];
214-
return result || '';
214+
return parseRawPayloadToJSON(result) || '';
215215
} catch {
216216
return '';
217217
}

temporal/client.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
type PayloadCoverageResult,
88
PayloadCoverageWorkflow,
99
RunningWorkflow,
10+
UserMetadataWorkflow,
1011
Workflow,
1112
} from './workflows';
1213

@@ -33,7 +34,8 @@ const workflows: WorkflowHandle[] = [];
3334

3435
export const startWorkflows = async (
3536
client: Client,
36-
): Promise<(string | number | void)[]> => {
37+
config: { waitForResult?: boolean } = { waitForResult: true },
38+
): Promise<(string | number | PayloadCoverageResult)[]> => {
3739
const wf1 = await client.workflow.start(Workflow, {
3840
taskQueue: 'e2e-1',
3941
args: ['Plain text input 1'],
@@ -58,15 +60,15 @@ export const startWorkflows = async (
5860
workflowId: 'running-workflow',
5961
});
6062

61-
workflows.push(wf1, wf2, wf3, wf4);
62-
63-
return Promise.all([wf1.result(), wf3.result()]);
64-
};
63+
const wf5 = await client.workflow.start(UserMetadataWorkflow, {
64+
taskQueue: 'e2e-1',
65+
args: ['Plain text input 5'],
66+
workflowId: 'user-metadata-workflow',
67+
staticSummary: '# Summary\n **this is the summary**',
68+
staticDetails: '# Details\n **these are the details**',
69+
});
6570

66-
export const startPayloadCoverageWorkflow = async (
67-
client: Client,
68-
): Promise<PayloadCoverageResult> => {
69-
const wf = await client.workflow.start(PayloadCoverageWorkflow, {
71+
const wf6 = await client.workflow.start(PayloadCoverageWorkflow, {
7072
taskQueue: 'e2e-1',
7173
workflowId: 'payload-coverage-workflow',
7274
args: [
@@ -98,9 +100,11 @@ export const startPayloadCoverageWorkflow = async (
98100
},
99101
});
100102

101-
workflows.push(wf);
102-
console.log(`✨ started payload-coverage-workflow (${wf.workflowId})`);
103-
return wf.result();
103+
workflows.push(wf1, wf2, wf3, wf4, wf5, wf6);
104+
105+
if (config?.waitForResult) {
106+
return Promise.all(workflows.map((wf) => wf.result()));
107+
}
104108
};
105109

106110
export const stopWorkflows = (): Promise<void[]> => {
File renamed without changes.

0 commit comments

Comments
 (0)