Files
next.js/test/e2e/app-dir/server-action-logging/app/action-buttons.js
Arian Tron 61f56f997c
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
first commit
2026-03-10 19:37:31 +03:30

117 lines
2.7 KiB
JavaScript

'use client'
import { useState } from 'react'
export default function ActionButtons({
successAction,
multiArgAction,
redirectAction,
notFoundAction,
errorAction,
objectArgAction,
arrayArgAction,
inlineAction,
promiseArgAction,
}) {
const [result, setResult] = useState(null)
const [error, setError] = useState(null)
const handleSuccess = async () => {
setError(null)
const res = await successAction(5)
setResult(res)
}
const handleMultiArg = async () => {
setError(null)
const res = await multiArgAction(1, 2, 3)
setResult(res)
}
const handleRedirect = async () => {
setError(null)
await redirectAction('/redirect-target')
}
const handleNotFound = async () => {
setError(null)
try {
await notFoundAction()
} catch (e) {
setError('notFound triggered')
}
}
const handleError = async () => {
setError(null)
try {
await errorAction()
} catch (e) {
setError(e.message)
}
}
const handleObjectArg = async () => {
setError(null)
const res = await objectArgAction({ name: 'test', value: 42 })
setResult(res)
}
const handleArrayArg = async () => {
setError(null)
const res = await arrayArgAction([1, 2, 3, 4, 5])
setResult(res)
}
const handleInline = async () => {
setError(null)
const res = await inlineAction(10)
setResult({ doubled: res })
}
const handlePromiseArg = async () => {
setError(null)
const res = await promiseArgAction(Promise.resolve('hello'))
setResult(res)
}
return (
<div>
<h1>Server Action Logging Test</h1>
<div>
<button id="success-action" onClick={handleSuccess}>
Success Action
</button>
<button id="multi-arg-action" onClick={handleMultiArg}>
Multi Arg Action
</button>
<button id="redirect-action" onClick={handleRedirect}>
Redirect Action
</button>
<button id="not-found-action" onClick={handleNotFound}>
NotFound Action
</button>
<button id="error-action" onClick={handleError}>
Error Action
</button>
<button id="object-arg-action" onClick={handleObjectArg}>
Object Arg Action
</button>
<button id="array-arg-action" onClick={handleArrayArg}>
Array Arg Action
</button>
<button id="inline-action" onClick={handleInline}>
Inline Action
</button>
<button id="promise-arg-action" onClick={handlePromiseArg}>
Promise Arg Action
</button>
</div>
{result && <pre id="result">{JSON.stringify(result, null, 2)}</pre>}
{error && <p id="error">{error}</p>}
</div>
)
}