Skip to content

Commit

Permalink
Merge branch 'main' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
jwoyo authored Nov 21, 2024
2 parents ed5e5fd + 3548fc3 commit fd22871
Show file tree
Hide file tree
Showing 167 changed files with 4,276 additions and 2,887 deletions.
39 changes: 39 additions & 0 deletions .github/DISCUSSION_TEMPLATE/docs-suggestions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
body:
- type: markdown
attributes:
value: |
Thank you for getting in touch! Please fill out this form as completely as possible.
Want to report a problem with the Starlight docs? [Open a new issue](https://github.com/withastro/starlight/issues/new?assignees=&labels=&projects=&template=---02-docs-issue.yml)
Want to chat before posting? [Join us in the `#starlight` channel on Discord](https://astro.build/chat)
- type: textarea
id: summary
attributes:
label: What is your idea?
description: A brief, one or two sentence description of your idea for how to improve the Starlight docs.
validations:
required: true
- type: textarea
id: background
attributes:
label: Why is this important?
description: Explain why this idea is valuable. What problems would it solve? Which users would it help?
validations:
required: true
- type: textarea
id: prior-art
attributes:
label: How does your idea relate to existing docs content?
description: Are there specific pages you would like to change? Or existing pages that are related to your proposal?
placeholder: |
- Example
- Example
- Example
- type: checkboxes
id: will-pr
attributes:
label: Participation
description: Let us know if your interested in contributing this feature yourself.
options:
- label: I am willing to submit a pull request for this feature.
required: false
45 changes: 45 additions & 0 deletions .github/ISSUE_TEMPLATE/---02-docs-issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: "\U0001F4DA Docs Issue"
description: Report an issue with the Starlight documentation
labels: []
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to let us know something is wrong! Please fill out this form as completely as possible.
- type: input
id: docs-page
attributes:
label: What page of the docs did you find an issue on?
description: If this issue applies to multiple pages, include additional pages in your bug description.
placeholder: https://starlight.astro.build/...
validations:
required: true
- type: textarea
id: bug-description
attributes:
label: Describe the issue
description: A clear and concise description of what the issue is.
validations:
required: true
- type: input
id: os
attributes:
label: What operating system are you using?
placeholder: Mac, Windows, Linux
validations:
required: true
- type: input
id: browser
attributes:
label: What browser are you using?
placeholder: Chrome, Firefox, Safari
validations:
required: true
- type: checkboxes
id: will-pr
attributes:
label: Participation
options:
- label: I am willing to submit a pull request for this issue.
required: false
3 changes: 0 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
- What does this PR change? Give us a brief description.
- Did you change something visual? A before/after screenshot can be helpful.

<!-- TAKING PART IN HACKTOBERFEST? LET US KNOW! -->
<!-- See https://contribute.docs.astro.build/guides/hacktoberfest/ for more details. -->

<!--
Here’s what will happen next:
One or more of our maintainers will take a look and may ask you to make changes.
Expand Down
3 changes: 3 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ i18n:
'🌟 tailwind':
- packages/tailwind/**

'🌟 docsearch':
- packages/docsearch/**

'🌟 markdoc':
- packages/markdoc/**

Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ jobs:
- name: Type check packages
run: pnpm typecheck

pa11y:
a11y:
name: Check for accessibility issues
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -107,12 +107,6 @@ jobs:
- name: Install Dependencies
run: pnpm i

- name: Build docs site
working-directory: ./docs
run: pnpm build
env:
NO_GRADIENTS: true

- name: Run accessibility audit
working-directory: ./docs
run: pnpm t
Expand Down
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ pnpm-lock.yaml

# https://github.com/withastro/prettier-plugin-astro/issues/337
packages/starlight/user-components/Tabs.astro

# Malformed YAML file used for testing
packages/starlight/__tests__/i18n/malformed-yaml-src/content/i18n/*.yml
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ To add a language, you will need its BCP-47 tag and a label. See [“Adding a ne
- Add your language to the `locales` config in `docs/astro.config.mjs`
- Add your language to the `locales` config in `docs/lunaria.config.json`
- Add your language’s subtag to the i18n label config in `.github/labeler.yml`
- Add your language to the `pa11y` script’s `--sitemap-exclude` flag in `package.json`
- Add your language to the `config.sitemap.exclude` option in `docs/__a11y__/test-utils.ts`
- Create the first translated page for your language.
This must be the Starlight landing page: `docs/src/content/docs/{language}/index.mdx`.
- Open a pull request on GitHub to add your changes to Starlight!
Expand Down
22 changes: 22 additions & 0 deletions docs/__a11y__/docs.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { expect, test } from './test-utils';

test('does not report accessibility violations on the docs site', async ({ docsSite }) => {
let violationsCount = 0;

const urls = await docsSite.getAllUrls();

for (const url of urls) {
const violations = await docsSite.testPage(url);

if (violations.length > 0) {
violationsCount += violations.length;
}

await docsSite.reportPageViolations(violations);
}

expect(
violationsCount,
`Found ${violationsCount} accessibility violations. Check the errors above for more details.`
).toBe(0);
});
155 changes: 155 additions & 0 deletions docs/__a11y__/test-utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
import { test as baseTest, type Page } from '@playwright/test';
import {
DefaultTerminalReporter,
getViolations,
injectAxe,
reportViolations,
} from 'axe-playwright';
import Sitemapper from 'sitemapper';

export { expect, type Locator } from '@playwright/test';

const config: Config = {
axe: {
// https://www.deque.com/axe/core-documentation/api-documentation/#axecore-tags
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag21a', 'wcag2aa', 'wcag21aa', 'wcag22aa', 'best-practice'],
},
},
// A list of violation to ignore.
ignore: [{ id: 'landmark-unique', nodeMatcher: landmarkUniqueNodeMatcher }],
sitemap: {
url: 'http://localhost:4321/sitemap-index.xml',
exclude: {
// A pattern to exclude URLs from the sitemap.
pattern: /\/(de|zh-cn|fr|es|pt-br|pt-pt|it|id|ko|ru|tr|hi|da|uk)\/.*/,
// A list of slugs to exclude from the sitemap after processing the pattern.
slugs: [
'components/using-components',
'getting-started',
'guides/customization',
'guides/i18n',
'guides/overriding-components',
'guides/pages',
'guides/project-structure',
'guides/site-search',
'manual-setup',
'reference/frontmatter',
'reference/overrides',
'reference/plugins',
],
},
replace: {
query: 'https://starlight.astro.build',
value: 'http://localhost:4321',
},
},
};

process.env.ASTRO_TELEMETRY_DISABLED = 'true';
process.env.ASTRO_DISABLE_UPDATE_CHECK = 'true';

export const test = baseTest.extend<{
docsSite: DocsSite;
}>({
docsSite: async ({ page }, use) => use(new DocsSite(page)),
});

// A Playwright test fixture accessible from within all tests.
class DocsSite {
constructor(private readonly page: Page) {}

async getAllUrls() {
const sitemap = new Sitemapper({ url: config.sitemap.url });
const { sites } = await sitemap.fetch();

if (sites.length === 0) {
throw new Error('No URLs found in sitemap.');
}

const urls: string[] = [];

for (const site of sites) {
const url = site.replace(config.sitemap.replace.query, config.sitemap.replace.value);
if (config.sitemap.exclude.pattern.test(url)) continue;
if (config.sitemap.exclude.slugs.some((slug) => url.endsWith(`/${slug}/`))) continue;
urls.push(url);
}

return urls;
}

async testPage(url: string) {
await this.page.goto(url);
await injectAxe(this.page);
await this.page.waitForLoadState('networkidle');
const violations = await getViolations(this.page, undefined, config.axe);
return this.#filterViolations(violations);
}

async reportPageViolations(violations: Awaited<ReturnType<typeof this.testPage>>) {
const url = this.page.url().replace(config.sitemap.replace.value, '');

if (violations.length > 0) {
console.error(`> Found ${violations.length} violations on ${url}\n`);
await reportViolations(violations, new DefaultTerminalReporter(true, true, false));
console.error('\n');
} else {
console.log(`> Found no violations on ${url}`);
}
}

#filterViolations(violations: Awaited<ReturnType<typeof getViolations>>) {
return violations.filter((violation) => {
return !config.ignore.some((ignore) => {
if (typeof ignore === 'string') return violation.id === ignore;
if (violation.id !== ignore.id) return false;
if (!ignore.nodeMatcher) return true;
return !violation.nodes.some(ignore.nodeMatcher);
});
});
}
}

function landmarkUniqueNodeMatcher(node: ViolationNode) {
/**
* Ignore the `landmark-unique` violation only if the node HTML is an aside.
*
* The best action to fix this violation would be to remove the landmark altogether as it's not
* necessary in this case and switch to the `note` role. Although, this is not possible at the
* moment due to an issue with NVDA not announcing it and also skipping the associated label for
* a role not supported.
*
* @see https://github.com/nvaccess/nvda/issues/10439
* @see https://github.com/withastro/starlight/pull/2503
*/
return !/^<aside[^>]* class="starlight-aside[^>]*>$/.test(node.html);
}

interface Config {
axe: Parameters<typeof getViolations>[2];
ignore: Array<
| string
| {
id: string;
// A function called for each node to evaluate if it should be ignored or not.
// Return `true` if the node should be considered for the violation, `false` otherwise.
nodeMatcher?: (node: ViolationNode) => boolean;
}
>;
sitemap: {
url: string;
exclude: {
pattern: RegExp;
slugs: string[];
};
replace: {
query: string;
value: string;
};
};
}

type Violations = Awaited<ReturnType<typeof getViolations>>;
type ViolationNode = Violations[number]['nodes'][number];
4 changes: 2 additions & 2 deletions docs/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export default defineConfig({
attrs: { property: 'og:image:alt', content: ogImageAlt },
},
],
customCss: process.env.NO_GRADIENTS ? [] : ['./src/assets/landing.css'],
customCss: ['./src/assets/landing.css'],
locales,
sidebar: [
{
Expand Down Expand Up @@ -147,7 +147,7 @@ export default defineConfig({
{
label: 'Reference',
translations: {
de: 'Referenz',
de: 'Referenzen',
es: 'Referencias',
ja: 'リファレンス',
fr: 'Référence',
Expand Down
14 changes: 7 additions & 7 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
"type": "module",
"version": "0.0.1",
"scripts": {
"test": "start-server-and-test 'pnpm preview' http://localhost:4321 'pnpm pa11y'",
"pa11y": "pa11y-ci --sitemap 'http://localhost:4321/sitemap-0.xml' --sitemap-find 'https://starlight.astro.build' --sitemap-replace 'http://localhost:4321' --sitemap-exclude '/(de|zh-cn|fr|es|pt-br|pt-pt|it|id|ko|ru|tr|hi|da|uk)/.*'",
"test": "playwright install --with-deps chromium && playwright test",
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
Expand All @@ -16,17 +15,18 @@
"grammars": "node grammars/generate.mjs"
},
"dependencies": {
"@astro-community/astro-embed-youtube": "^0.5.2",
"@astro-community/astro-embed-youtube": "^0.5.6",
"@astrojs/starlight": "workspace:*",
"@lunariajs/core": "^0.1.1",
"@types/culori": "^2.1.1",
"astro": "^4.15.3",
"astro": "^4.16.10",
"culori": "^4.0.1",
"sharp": "^0.32.5"
},
"devDependencies": {
"pa11y-ci": "^3.0.1",
"starlight-links-validator": "^0.12.1",
"start-server-and-test": "^2.0.4"
"@playwright/test": "^1.45.0",
"axe-playwright": "^2.0.3",
"sitemapper": "^3.2.12",
"starlight-links-validator": "^0.13.2"
}
}
Loading

0 comments on commit fd22871

Please sign in to comment.