mirror of
https://github.com/supabase/supabase.git
synced 2026-06-22 03:52:46 +08:00
Two-part fix for the Update JS Client Libraries Docs workflow. First, the `make` invocation was narrowed to `make download.tsdoc.v2` so the workflow no longer re-downloads unrelated Management and Storage REST openapi specs alongside the JS TypeDoc files, which was the source of the noise in #46738. Second, the `build-reference-content` snapshot test now serializes to a JSON file via `toMatchFileSnapshot` with a cycle-breaker, because the previous `toMatchSnapshot` of a raw object was being collapsed to `[Object]` placeholders by pretty-format (533 of them), hiding every param rename, JSDoc edit, return-type change, and signature tweak. Verified against supabase-js v2.108.0: the `count` to `rows` rename in `PostgrestTransformBuilder.{limit,maxAffected}` now shows up in the snapshot diff as expected. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated documentation generation workflow to run a more targeted build command. * Added ignore rule for test snapshot files and refreshed the autogenerated PR description/reference snapshot. * **Tests** * Improved test snapshot strategy to use file-based snapshots and robust handling of circular structures for more reliable assertions. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
37 lines
1.6 KiB
TypeScript
37 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
|
|
import { collectReferenceContent } from './build-reference-content'
|
|
|
|
/**
|
|
* Regression guard for the new reference-content pipeline. Snapshots the five
|
|
* derived artifacts produced for `javascript/v2` so that any change in the
|
|
* extraction logic (or in the upstream supabase-js TypeDoc output) shows up
|
|
* as a snapshot diff in CI rather than silently shifting what the renderer
|
|
* sees. When the supabase-js `make` workflow lands a new release in
|
|
* `spec/reference/javascript/v2/`, re-run with `--update` to refresh the
|
|
* baseline as part of the same PR.
|
|
*
|
|
* Serializes to a JSON string first so vitest's `pretty-format` serializer
|
|
* doesn't collapse deep / cyclic structures (typeSpec contains
|
|
* self-referencing builder types) into `[Object]` placeholders — which would
|
|
* make param renames, signature changes, and JSDoc edits invisible.
|
|
*/
|
|
describe('build-reference-content — javascript/v2', () => {
|
|
it('matches snapshot', async () => {
|
|
const { bySlug, flat, sections, functionsList, typeSpec } = await collectReferenceContent(
|
|
'javascript',
|
|
'v2'
|
|
)
|
|
const seen = new WeakSet<object>()
|
|
const breakCycles = (_key: string, value: unknown) => {
|
|
if (value && typeof value === 'object') {
|
|
if (seen.has(value as object)) return '[Circular]'
|
|
seen.add(value as object)
|
|
}
|
|
return value
|
|
}
|
|
const json = JSON.stringify({ bySlug, flat, sections, functionsList, typeSpec }, breakCycles, 2)
|
|
await expect(json).toMatchFileSnapshot('./__snapshots__/build-reference-content.v2.json')
|
|
})
|
|
})
|