diff --git a/packages/next/src/build/swc/options.ts b/packages/next/src/build/swc/options.ts index fa91033272..66fc96dc66 100644 --- a/packages/next/src/build/swc/options.ts +++ b/packages/next/src/build/swc/options.ts @@ -178,16 +178,16 @@ function getBaseSWCOptions({ development ), }), - serverComponents: hasServerComponents - ? { isServer: !!isServerLayer } - : undefined, - serverActions: hasServerComponents - ? { - // TODO-APP: When Server Actions is stable, we need to remove this flag. - enabled: !!isServerActionsEnabled, - isServer: !!isServerLayer, - } - : undefined, + serverComponents: + hasServerComponents && !jest ? { isServer: !!isServerLayer } : undefined, + serverActions: + hasServerComponents && !jest + ? { + // TODO-APP: When Server Actions is stable, we need to remove this flag. + enabled: !!isServerActionsEnabled, + isServer: !!isServerLayer, + } + : undefined, bundleTarget, } } diff --git a/test/production/jest/rsc/app/server-action/action.js b/test/production/jest/rsc/app/server-action/action.js new file mode 100644 index 0000000000..e2903615f7 --- /dev/null +++ b/test/production/jest/rsc/app/server-action/action.js @@ -0,0 +1,5 @@ +'use server' + +export async function action(data) { + console.log(data) +} diff --git a/test/production/jest/rsc/app/server-action/page.jsx b/test/production/jest/rsc/app/server-action/page.jsx new file mode 100644 index 0000000000..554ef1b172 --- /dev/null +++ b/test/production/jest/rsc/app/server-action/page.jsx @@ -0,0 +1,9 @@ +import { action } from './action' + +export default function Page() { + return ( + + ) +} diff --git a/test/production/jest/rsc/app/server-action/page.test.jsx b/test/production/jest/rsc/app/server-action/page.test.jsx new file mode 100644 index 0000000000..e077b511e0 --- /dev/null +++ b/test/production/jest/rsc/app/server-action/page.test.jsx @@ -0,0 +1,10 @@ +/** + * @jest-environment jsdom + */ +import { render, screen } from '@testing-library/react' +import Page from './page' + +it('works with client-only code', () => { + render() + expect(screen.getByTestId('log')).toHaveTextContent('log') +})