Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
VITE_VERSION_LATEST="v11.0.0"
VITE_VERSION_NEXT="v12.0.0"
VITE_VERSION_LATEST="v12.0.0"
VITE_VERSION_NEXT="v13.0.0"
32 changes: 32 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,38 @@ jobs:
echo "SAFE_BRANCH=$SAFE_BRANCH" >> "$GITHUB_ENV"
echo "VITE_DEPLOYMENT_URL=https://${SAFE_BRANCH}.rescript-lang.pages.dev" >> "$GITHUB_ENV"
fi
- name: Set Algolia env
shell: bash
env:
ALGOLIA_APP_ID: ${{ vars.ALGOLIA_APP_ID }}
ALGOLIA_INDEX_BASENAME: ${{ vars.ALGOLIA_INDEX_BASENAME }}
ALGOLIA_SEARCH_API_KEY_DEV: ${{ vars.ALGOLIA_SEARCH_API_KEY_DEV }}
ALGOLIA_SEARCH_API_KEY_PROD: ${{ vars.ALGOLIA_SEARCH_API_KEY_PROD }}
ALGOLIA_ADMIN_API_KEY_DEV: ${{ secrets.ALGOLIA_ADMIN_API_KEY_DEV }}
ALGOLIA_ADMIN_API_KEY_PROD: ${{ secrets.ALGOLIA_ADMIN_API_KEY_PROD }}
run: |
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref_name }}" == "master" ]]; then
INDEX_PREFIX="prod"
SEARCH_KEY="$ALGOLIA_SEARCH_API_KEY_PROD"
ADMIN_KEY="$ALGOLIA_ADMIN_API_KEY_PROD"
elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.environment }}" == "production" ]]; then
INDEX_PREFIX="prod"
SEARCH_KEY="$ALGOLIA_SEARCH_API_KEY_PROD"
ADMIN_KEY="$ALGOLIA_ADMIN_API_KEY_PROD"
else
INDEX_PREFIX="dev"
SEARCH_KEY="$ALGOLIA_SEARCH_API_KEY_DEV"
ADMIN_KEY="$ALGOLIA_ADMIN_API_KEY_DEV"
fi

INDEX_NAME="${INDEX_PREFIX}_${ALGOLIA_INDEX_BASENAME}"

echo "VITE_ALGOLIA_APP_ID=$ALGOLIA_APP_ID" >> "$GITHUB_ENV"
echo "VITE_ALGOLIA_INDEX_NAME=$INDEX_NAME" >> "$GITHUB_ENV"
echo "VITE_ALGOLIA_SEARCH_API_KEY=$SEARCH_KEY" >> "$GITHUB_ENV"
echo "ALGOLIA_APP_ID=$ALGOLIA_APP_ID" >> "$GITHUB_ENV"
echo "ALGOLIA_INDEX_NAME=$INDEX_NAME" >> "$GITHUB_ENV"
echo "ALGOLIA_ADMIN_API_KEY=$ADMIN_KEY" >> "$GITHUB_ENV"
- name: Build
run: yarn build
env:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ scripts/gendocs.mjs
scripts/generate_*.mjs
scripts/gendocs.jsx
scripts/generate_*.jsx
scripts/LogAlgoliaEnvStatus.jsx

# Generated via generate-llms script
public/llms/manual/**/llm*.txt
Expand Down
37 changes: 37 additions & 0 deletions __tests__/AlgoliaConfig_.test.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
open Vitest

test("publicConfigFrom returns config when all public vars are present", async () => {
let result = AlgoliaConfig.publicConfigFrom(
~appId=Some("app_123"),
~indexName=Some("dev_rescript_lang"),
~searchApiKey=Some("search_123"),
)

let expected: AlgoliaConfig.publicConfig = {
appId: "app_123",
indexName: "dev_rescript_lang",
searchApiKey: "search_123",
}

expect(result)->toEqual(Some(expected))
})

test("publicConfigFrom reports missing public vars in declaration order", async () => {
let result = AlgoliaConfig.missingPublicVars(
~appId=None,
~indexName=Some("dev_rescript_lang"),
~searchApiKey=None,
)

expect(result)->toEqual(["VITE_ALGOLIA_APP_ID", "VITE_ALGOLIA_SEARCH_API_KEY"])
})

test("publisherConfigFrom reports missing publisher vars in declaration order", async () => {
let result = AlgoliaConfig.missingPublisherVars(
~appId=Some("app_123"),
~indexName=None,
~adminApiKey=None,
)

expect(result)->toEqual(["ALGOLIA_INDEX_NAME", "ALGOLIA_ADMIN_API_KEY"])
})
19 changes: 19 additions & 0 deletions __tests__/AlgoliaEnvStatus_.test.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
open Vitest

test("reports missing public vars in declaration order", async () => {
let env = Dict.fromArray([
("VITE_ALGOLIA_APP_ID", ""),
("VITE_ALGOLIA_INDEX_NAME", "dev_rescript_lang"),
])

expect(AlgoliaEnvStatus.getMissingPublicAlgoliaVars(~env))->toEqual([
"VITE_ALGOLIA_APP_ID",
"VITE_ALGOLIA_SEARCH_API_KEY",
])
})

test("formats the disabled search warning", async () => {
expect(AlgoliaEnvStatus.formatDisabledMessage(["VITE_ALGOLIA_APP_ID"]))->toBe(
"Algolia search disabled: missing VITE_ALGOLIA_APP_ID",
)
})
33 changes: 33 additions & 0 deletions __tests__/DocsOverview_.test.res
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,39 @@ test("desktop docs overview shows ecosystem links", async () => {
await element(wrapper)->toMatchScreenshot("desktop-docs-overview-ecosystem")
})

test("docs overview uses unversioned docs links", async () => {
await viewport(1440, 900)

let _screen = await render(
<MemoryRouter initialEntries=["/docs"]>
<div dataTestId="docs-overview-wrapper">
<DocsOverview.default />
</div>
</MemoryRouter>,
)

let overviewLink = switch document->WebAPI.Document.querySelector(
"a[href='/docs/manual/introduction']",
) {
| Value(link) => link
| Null => failwith("expected docs overview to link to the unversioned manual introduction")
}
await element(overviewLink)->toBeVisible

let genTypeLink = switch document->WebAPI.Document.querySelector(
"a[href='/docs/manual/typescript-integration']",
) {
| Value(link) => link
| Null => failwith("expected docs overview to link to the unversioned GenType docs page")
}
await element(genTypeLink)->toBeVisible

switch document->WebAPI.Document.querySelector("a[href*='/docs/manual/v']") {
| Value(_) => failwith("expected docs overview to avoid versioned manual links")
| Null => ()
}
})

test("mobile docs overview", async () => {
await viewport(600, 1200)

Expand Down
Loading
Loading