6
.github/workflows/test.yml
vendored
6
.github/workflows/test.yml
vendored
@@ -49,6 +49,7 @@ jobs:
|
||||
'routing',
|
||||
'unit',
|
||||
'linting',
|
||||
'rendering-fixtures',
|
||||
];
|
||||
if (context.payload.repository.full_name === 'github/docs-internal') {
|
||||
all.push('translations');
|
||||
@@ -110,6 +111,10 @@ jobs:
|
||||
.github/actions-scripts/merge-early-access.sh
|
||||
rm -fr docs-early-access
|
||||
|
||||
- name: Check the test fixture data (if applicable)
|
||||
if: ${{ matrix.test-group == 'rendering-fixtures' }}
|
||||
run: ./script/copy-fixture-data.js --check
|
||||
|
||||
- name: Clone all translations
|
||||
if: ${{ matrix.test-group == 'translations' }}
|
||||
uses: ./.github/actions/clone-translations
|
||||
@@ -172,4 +177,5 @@ jobs:
|
||||
# tests run only in English. The exception is the
|
||||
# `tests/translations/` suite which needs all languages to be set up.
|
||||
ENABLED_LANGUAGES: ${{ matrix.test-group == 'translations' && 'all' || '' }}
|
||||
ROOT: ${{ matrix.test-group == 'rendering-fixtures' && 'tests/fixtures' || ''}}
|
||||
run: npm test -- tests/${{ matrix.test-group }}/
|
||||
|
||||
@@ -110,10 +110,12 @@ For more information, see:
|
||||
|
||||
{% data reusables.actions.disabling-github-actions %}
|
||||
|
||||
{% ifversion actions-cache-admin-ui %}You can also manage {% data variables.product.prodname_actions %} settings for your enterprise, such as workflow permissions and cache storage.{% endif %}
|
||||
|
||||
For more information, see:
|
||||
- "[Managing {% data variables.product.prodname_actions %} settings for a repository](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository)"
|
||||
- "[Disabling or limiting {% data variables.product.prodname_actions %} for your organization](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization)"
|
||||
- "[Enforcing policies for {% data variables.product.prodname_actions %} in your enterprise](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-github-actions-policies-for-your-enterprise#enforcing-a-policy-for-artifact-and-log-retention-in-your-enterprise)"
|
||||
- "[Enforcing policies for {% data variables.product.prodname_actions %} in your enterprise](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-github-actions-policies-for-your-enterprise)"
|
||||
|
||||
## Disabling and enabling workflows
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
title: About Campus Experts
|
||||
intro: 'As a student, learn the skills you need to build your school''s technology community and a real-world portfolio, with {% data variables.product.prodname_dotcom %} Campus Experts training.'
|
||||
redirect_from:
|
||||
- /education/teach-and-learn-with-github-education/about-campus-experts
|
||||
- /github/teaching-and-learning-with-github-education/about-campus-experts
|
||||
- /articles/about-campus-experts
|
||||
- /education/explore-the-benefits-of-teaching-and-learning-with-github-education/about-campus-experts
|
||||
versions:
|
||||
fpt: '*'
|
||||
---
|
||||
Learn public speaking skills, technical writing, community leadership, and software development skills as a {% data variables.product.prodname_dotcom %} Campus Expert.
|
||||
|
||||
To learn more about training programs for student leaders, see "[{% data variables.product.prodname_dotcom %} Campus Experts](https://education.github.com/students/experts)."
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: About GitHub Campus Experts
|
||||
intro: 'Enrich your college’s technical community by becoming a {% data variables.product.prodname_student_leader_program_singular %}.'
|
||||
redirect_from:
|
||||
- /education/teach-and-learn-with-github-education/about-campus-experts
|
||||
- /github/teaching-and-learning-with-github-education/about-campus-experts
|
||||
- /articles/about-campus-experts
|
||||
- /education/explore-the-benefits-of-teaching-and-learning-with-github-education/about-campus-experts
|
||||
- /education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-at-your-educational-institution/about-campus-experts
|
||||
versions:
|
||||
fpt: '*'
|
||||
shortTitle: GitHub Campus Experts Program
|
||||
---
|
||||
|
||||
Learn the skills to build and grow diverse technology communities on campus with training, mentorship, and support from {% data variables.product.prodname_dotcom %} as part of the {% data variables.product.prodname_student_leader_program %} program. For more information on applying to the {% data variables.product.prodname_student_leader_program %}, see “[Applying to be a {% data variables.product.prodname_student_leader_program_singular %}](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-at-your-educational-institution/applying-to-be-a-github-campus-expert).”
|
||||
|
||||
## About {% data variables.product.prodname_student_leader_program %}
|
||||
|
||||
{% data variables.product.prodname_student_leader_program %} are student leaders that strive to build diverse and inclusive spaces to learn skills, share their experiences, and build projects together. {% data variables.product.prodname_student_leader_program %} can be found across the globe leading in-person and online conferences, meetups, and hackathons, and maintaining open-source projects. For more information on {% data variables.product.prodname_student_leader_program %}, go to [https://education.github.com/experts](https://education.github.com/experts).
|
||||
|
||||
### About {% data variables.product.prodname_student_leader_program %} program training
|
||||
|
||||
As local leaders, {% data variables.product.prodname_student_leader_program %} know the challenges students on their campuses face. Program training is the most significant benefit any student can get from the program. Over six weeks, you’ll analyze your community and gain leadership skills like public speaking, technical writing, and software development. At the end of your training, you’ll write a community impact proposal to serve as a guide for activities you've planned and goals you've set for your community. With the skills from your {% data variables.product.prodname_student_leader_program %} training, you can build a strong technical community, teach other students, create new opportunities for your student community, and position your institution within a global community of student leaders.
|
||||
|
||||
### Contact your closest {% data variables.product.prodname_student_leader_program_singular %}
|
||||
|
||||
Optionally, to learn more about the program, contact your closest {% data variables.product.prodname_student_leader_program_singular %}.
|
||||
|
||||
1. Go to the “[{% data variables.product.prodname_student_leader_program %} program](https://education.github.com/students/experts)” site.
|
||||
1. Click **Find a Campus Expert**.
|
||||
1. In the “Contact your local Campus Expert” section, click **Contact us**.
|
||||
1. Hover over the map that appears, then click {% octicon "plus" aria-label="The plus icon" %} and {% octicon "dash" aria-label="The dash icon" %} or scroll in and out to find a {% data variables.product.prodname_student_leader_program_singular %} near you. {% data variables.product.prodname_student_leader_program %} are represented on the map as flags.
|
||||
1. Click a flag, then click the profile link that appears in a pop-up window.
|
||||
1. On the {% data variables.product.prodname_student_leader_program_singular %}’s profile, click a social media link to contact them.
|
||||
|
||||
## Further reading
|
||||
|
||||
- “[Applying to be a {% data variables.product.prodname_student_leader_program_singular %}](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-at-your-educational-institution/applying-to-be-a-github-campus-expert)”
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Applying to be a GitHub Campus Expert
|
||||
intro: 'As a student, you can apply to be a {% data variables.product.prodname_student_leader_program_singular %} to gain new skills and grow your college’s technical community.'
|
||||
versions:
|
||||
fpt: '*'
|
||||
shortTitle: Apply to Campus Experts
|
||||
---
|
||||
|
||||
## Applying to the {% data variables.product.prodname_student_leader_program %} program
|
||||
|
||||
To apply to the {% data variables.product.prodname_student_leader_program %} program, you must first submit an application form, then submit a video resume. Applications to the program open in February and August, and you’ll have a full month to apply.
|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** The application process helps us get to know the applicant. Here are some things we want to learn about you:
|
||||
- Motivation: What makes you tick? What drives you?
|
||||
- Interest: Why do you want to be part of the program?
|
||||
- Growth and potential: What skills do you want to learn, and how will they help you grow personally and professionally?
|
||||
- Contribution: What impact do you want to make on your campus?
|
||||
|
||||
{% endnote %}
|
||||
|
||||
### Eligibility criteria
|
||||
|
||||
To become a {% data variables.product.prodname_student_leader_program_singular %}, you must:
|
||||
|
||||
- Be a {% data variables.product.prodname_dotcom %} user for at least six months.
|
||||
- Be at least 18 years of age.
|
||||
- Be enrolled in a post-secondary formal education institution.
|
||||
- Have more than one year left as a student before graduating.
|
||||
- Not be enrolled in the {% data variables.product.prodname_dotcom %} Campus Advisors Program.
|
||||
- Validate your student status through the [{% data variables.product.prodname_student_pack %}](https://education.github.com/pack).
|
||||
|
||||
### Submitting your application form
|
||||
|
||||
In the application form, we’re looking for students to tell us about the challenges their student community faces, what opportunities they want to build for their peers, and the potential they see for growth.
|
||||
1. Go to [https://education.github.com/experts](https://education.github.com/experts).
|
||||
1. To learn if applications are open, click **Become a Campus Expert** {% octicon "arrow-right" aria-label="The right arrow icon" %}.
|
||||
1. If applications are open, a new page will appear titled “Your journey starts here”. To start your application, click **Apply Now**.
|
||||
|
||||
Otherwise, if applications are closed, a message will appear with the dates of the next application cycle.
|
||||
1. Following the prompts in the form, complete the application.
|
||||
1. Click **Submit Application**.
|
||||
1. Optionally, to confirm your application was submitted successfully, check the email address you provided for an email confirming your submission.
|
||||
1. Two weeks after the program applications close, check for an email containing an update on your application status and instructions to submit your video resume.
|
||||
|
||||
### Submitting your video resume
|
||||
|
||||
In your video resume, we look forward to getting to know you as an individual.
|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** A video using your webcam and computer microphone is more than enough! We understand this process might not be accessible to all students. If you require an alternative method to make your submission, please reach out to the GitHub Education team.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
1. Open the email you received after submitting your application form.
|
||||
1. Using the guidelines included in the application status email, record your video resume.
|
||||
1. Once your video is ready to be submitted, click **Upload video** at the bottom of the application status email.
|
||||
1. On the video submission form, add your email address and upload your video.
|
||||
1. Click **Submit** at the bottom of the form to send your video in for review.
|
||||
|
||||
After your video has been submitted, we’ll take about a week to review it. If the program is the right fit, you’ll be accepted and receive invitations to start the {% data variables.product.prodname_student_leader_program %} training and join an onboarding call.
|
||||
@@ -9,7 +9,7 @@ versions:
|
||||
fpt: '*'
|
||||
children:
|
||||
- /about-github-campus-program
|
||||
- /about-campus-experts
|
||||
- /about-github-campus-experts
|
||||
- /applying-to-be-a-github-campus-expert
|
||||
shortTitle: At your institution
|
||||
---
|
||||
|
||||
|
||||
@@ -46,5 +46,6 @@ Participate in the community, get training from {% data variables.product.compan
|
||||
|
||||
- [{% data variables.product.prodname_education_community %}]({% data variables.product.prodname_education_forum_link %})
|
||||
- [About {% data variables.product.prodname_global_campus %} for students](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/github-global-campus-for-students/about-github-global-campus-for-students)
|
||||
- [About Campus Experts](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/about-campus-experts)
|
||||
- [About {% data variables.product.prodname_student_leader_program %}](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-at-your-educational-institution/about-github-campus-experts)
|
||||
- [Applying to be a {% data variables.product.prodname_student_leader_program_singular %}](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-at-your-educational-institution/applying-to-be-a-github-campus-expert)
|
||||
- [Contribute with GitHub Community Exchange](/education/contribute-with-github-community-exchange)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
1. Under **Artifact and log retention**, enter a new value.
|
||||
1. {% ifversion actions-cache-admin-ui %}In the "Artifact, log, and cache settings" section, u{% else %}U{% endif %}nder **Artifact and log retention**, enter a new value.
|
||||
1. Click **Save** to apply the change.
|
||||
|
||||
@@ -47,6 +47,8 @@ prodname_campus_program: 'GitHub Campus Program'
|
||||
prodname_student_pack: 'GitHub Student Developer Pack'
|
||||
prodname_global_campus: 'GitHub Global Campus'
|
||||
prodname_community_exchange: 'GitHub Community Exchange'
|
||||
prodname_student_leader_program: 'GitHub Campus Experts'
|
||||
prodname_student_leader_program_singular: 'GitHub Campus Expert'
|
||||
|
||||
# GitHub CLI
|
||||
prodname_cli: 'GitHub CLI'
|
||||
|
||||
@@ -3,9 +3,10 @@ import path from 'path'
|
||||
import frontmatter from './read-frontmatter.js'
|
||||
import getApplicableVersions from './get-applicable-versions.js'
|
||||
import removeFPTFromPath from './remove-fpt-from-path.js'
|
||||
import { ROOT } from './constants.js'
|
||||
|
||||
// Both internal and external products are specified in content/index.md
|
||||
const homepage = path.posix.join(process.cwd(), 'content/index.md')
|
||||
const homepage = path.posix.join(ROOT, 'content/index.md')
|
||||
const { data } = frontmatter(await fs.readFile(homepage, 'utf8'))
|
||||
|
||||
export const productIds = data.children
|
||||
@@ -15,7 +16,7 @@ const internalProducts = {}
|
||||
|
||||
for (const productId of productIds) {
|
||||
const relPath = productId
|
||||
const dir = path.posix.join('content', relPath)
|
||||
const dir = path.join(ROOT, 'content', relPath)
|
||||
|
||||
// Early Access may not exist in the current checkout
|
||||
try {
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
export const ROOT = process.env.ROOT || '.'
|
||||
export const USER_LANGUAGE_COOKIE_NAME = 'user_language'
|
||||
export const TRANSLATIONS_ROOT = process.env.TRANSLATIONS_ROOT || 'translations'
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
import dotenv from 'dotenv'
|
||||
|
||||
import { TRANSLATIONS_ROOT } from './constants.js'
|
||||
import { ROOT, TRANSLATIONS_ROOT } from './constants.js'
|
||||
import path from 'path'
|
||||
|
||||
dotenv.config()
|
||||
@@ -21,7 +21,7 @@ const possibleEnvVars = {
|
||||
}
|
||||
|
||||
function getRoot(languageCode) {
|
||||
if (languageCode === 'en') return ''
|
||||
if (languageCode === 'en') return ROOT
|
||||
if (languageCode in possibleEnvVars) {
|
||||
const possibleEnvVar = possibleEnvVars[languageCode]
|
||||
if (possibleEnvVar) {
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
import path from 'path'
|
||||
import { fileURLToPath } from 'url'
|
||||
|
||||
import { readCompressedJsonFileFallback } from '../read-json-file.js'
|
||||
import getExceptionRedirects from './exception-redirects.js'
|
||||
|
||||
import { latest } from '../enterprise-server-releases.js'
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
const EXCEPTIONS_FILE = path.join(__dirname, './static/redirect-exceptions.txt')
|
||||
const EXCEPTIONS_FILE = './lib/redirects/static/redirect-exceptions.txt'
|
||||
|
||||
// This function runs at server warmup and precompiles possible redirect routes.
|
||||
// It outputs them in key-value pairs within a neat Javascript object: { oldPath: newPath }
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import path from 'path'
|
||||
|
||||
import { ROOT } from '../../lib/constants.js'
|
||||
import getApplicableVersions from '../../lib/get-applicable-versions.js'
|
||||
import { getDeepDataByLanguage } from '../../lib/get-data.js'
|
||||
|
||||
@@ -29,7 +32,10 @@ function getFeaturesByVersion(currentVersion) {
|
||||
// Determine whether the currentVersion belongs to the list of versions the feature is available in.
|
||||
for (const [featureName, feature] of Object.entries(allFeatures)) {
|
||||
const { versions } = feature
|
||||
const applicableVersions = getApplicableVersions(versions, `data/features/${featureName}.yml`)
|
||||
const applicableVersions = getApplicableVersions(
|
||||
versions,
|
||||
path.join(ROOT, `data/features/${featureName}.yml`)
|
||||
)
|
||||
|
||||
// Adding the resulting boolean to the context object gives us the ability to use
|
||||
// `{% if featureName ... %}` conditionals in content files.
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import path from 'path'
|
||||
import { existsSync } from 'fs'
|
||||
|
||||
import { ROOT } from '../lib/constants.js'
|
||||
import Page from '../lib/page.js'
|
||||
import { languageKeys } from '../lib/languages.js'
|
||||
|
||||
const languagePrefixRegex = new RegExp(`^/(${languageKeys.join('|')})(/|$)`)
|
||||
const englishPrefixRegex = /^\/en(\/|$)/
|
||||
const CONTENT_ROOT = 'content'
|
||||
const CONTENT_ROOT = path.join(ROOT, 'content')
|
||||
|
||||
export default async function findPage(
|
||||
req,
|
||||
|
||||
@@ -3,8 +3,9 @@ import path from 'path'
|
||||
|
||||
import frontmatter from 'gray-matter'
|
||||
import { languageKeys } from './lib/languages.js'
|
||||
import { ROOT } from './lib/constants.js'
|
||||
|
||||
const homepage = path.posix.join(process.cwd(), 'content/index.md')
|
||||
const homepage = path.posix.join(ROOT, 'content/index.md')
|
||||
const { data } = frontmatter(fs.readFileSync(homepage, 'utf8'))
|
||||
const productIds = data.children
|
||||
|
||||
|
||||
@@ -185,6 +185,7 @@
|
||||
"build": "next build",
|
||||
"debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect server.js",
|
||||
"dev": "cross-env npm start",
|
||||
"fixture-dev": "cross-env ROOT=tests/fixtures npm start",
|
||||
"index-test-fixtures": "node script/search/index-elasticsearch.js -l en -l ja -V ghae -V dotcom --index-prefix tests -- tests/content/fixtures/search-indexes",
|
||||
"lint": "eslint '**/*.{js,mjs,ts,tsx}'",
|
||||
"lint-translation": "cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/linting/lint-files.js",
|
||||
|
||||
104
script/copy-fixture-data.js
Executable file
104
script/copy-fixture-data.js
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
// [start-readme]
|
||||
//
|
||||
// There are certain files that have to be manually copied from the
|
||||
// real data into the test fixture data.
|
||||
//
|
||||
// This script copies the files from `data/` into `tests/fitures/data/...`
|
||||
// that are files that are both needed for fixture testing yet can't
|
||||
// live with the code. For example, `data/ui.yml` is part of the rendering
|
||||
// code, but it lives in `data/` so it can be translated.
|
||||
//
|
||||
// [end-readme]
|
||||
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
import { program } from 'commander'
|
||||
import chalk from 'chalk'
|
||||
import mkdirp from 'mkdirp'
|
||||
|
||||
// Here, write down all the files that are actually part of the rendering
|
||||
// functionality yet live in data.
|
||||
const MANDATORY_FILES = [
|
||||
'data/ui.yml',
|
||||
'data/reusables/policies/translation.md',
|
||||
'data/reusables/enterprise_deprecation/deprecation_details.md',
|
||||
'data/reusables/enterprise_deprecation/version_was_deprecated.md',
|
||||
'data/reusables/enterprise_deprecation/version_will_be_deprecated.md',
|
||||
'data/variables/release_candidate.yml',
|
||||
]
|
||||
|
||||
const DESTINATION = path.resolve('tests/fixtures')
|
||||
|
||||
program
|
||||
.description('Make sure the test fixtures have up-to-date data from the real content')
|
||||
.option('--check', 'Exit non-zero if it had to actually do something')
|
||||
.option('--dry-run', "Don't actually write changes to disk")
|
||||
.option('-v, --verbose', 'Verbose outputs')
|
||||
.parse(process.argv)
|
||||
|
||||
main(program.opts())
|
||||
|
||||
async function main(opts) {
|
||||
let errors = 0
|
||||
for (const file of MANDATORY_FILES) {
|
||||
const source = fs.readFileSync(file, 'utf-8')
|
||||
const destination = path.join(DESTINATION, file)
|
||||
|
||||
if (opts.check) {
|
||||
// The destination has to exist and be identical
|
||||
try {
|
||||
const copied = fs.readFileSync(destination, 'utf-8')
|
||||
if (copied !== source) {
|
||||
// console.warn(chalk.red(`The file ${destination} is different from ${file}`))
|
||||
console.warn(`The file ${chalk.red(destination)} is different from ${chalk.red(file)}`)
|
||||
errors++
|
||||
} else if (opts.verbose) {
|
||||
console.log(`The file ${chalk.green(destination)} is up-to-date 🥰`)
|
||||
}
|
||||
} catch (error) {
|
||||
if (error.code === 'ENOENT') {
|
||||
console.warn(`The file ${chalk.red(destination)} does not exist`)
|
||||
errors++
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
const copied = fs.readFileSync(destination, 'utf-8')
|
||||
if (copied === source) {
|
||||
if (opts.verbose) {
|
||||
console.log(`The file ${chalk.green(destination)} was perfect already 👌`)
|
||||
}
|
||||
continue
|
||||
}
|
||||
} catch (error) {
|
||||
if (error.code !== 'ENOENT') throw error
|
||||
}
|
||||
if (!opts.dryRun) {
|
||||
await mkdirp(path.dirname(destination))
|
||||
fs.writeFileSync(destination, source, 'utf-8')
|
||||
if (opts.verbose) {
|
||||
console.log(`Copied latest ${chalk.green(file)} to ${chalk.bold(destination)} 👍🏼`)
|
||||
}
|
||||
} else if (opts.verbose) {
|
||||
console.log(`Would copy latest ${chalk.bold(file)} to ${chalk.bold(destination)}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (errors > 0) {
|
||||
console.warn(
|
||||
'\n',
|
||||
chalk.yellow(
|
||||
'Run this script again without --check to make all fixture data files up-to-date. ' +
|
||||
'Then commit and check in.'
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
process.exitCode = errors
|
||||
}
|
||||
17
tests/fixtures/content/get-started/foo/autotitling.md
vendored
Normal file
17
tests/fixtures/content/get-started/foo/autotitling.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Autotitling
|
||||
intro: Internal links that use AUTOTITLE should just work
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
type: how_to
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
Links that use the word `AUTOTITLE` in the Markdown become the
|
||||
title of the document it links to.
|
||||
|
||||
For example "[AUTOTITLE](/get-started/quickstart/hello-world)."
|
||||
14
tests/fixtures/content/get-started/foo/bar.md
vendored
Normal file
14
tests/fixtures/content/get-started/foo/bar.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: Bar Usually Comes After Foo
|
||||
shortTitle: Bar
|
||||
intro: This page doesn't really have an intro
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
---
|
||||
|
||||
## Heading
|
||||
|
||||
Nothing here to see.
|
||||
16
tests/fixtures/content/get-started/foo/cross-version-linking.md
vendored
Normal file
16
tests/fixtures/content/get-started/foo/cross-version-linking.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Cross Version Linking
|
||||
intro: Testing to cross the version boundary with hardcoded cross-version links
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
type: how_to
|
||||
---
|
||||
|
||||
## Get right into it
|
||||
|
||||
[Hello world always in free-pro-team](/free-pro-team@latest/get-started/quickstart/hello-world)
|
||||
|
||||
[Autotitling page always in enterprise-server latest](/enterprise-server@latest/get-started/quickstart/hello-world)
|
||||
14
tests/fixtures/content/get-started/foo/index.md
vendored
Normal file
14
tests/fixtures/content/get-started/foo/index.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: Fooing Around
|
||||
shortTitle: Foo
|
||||
intro: 'The most basic of fixture data for {% data variables.product.product_name %}'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
children:
|
||||
- /bar
|
||||
- /autotitling
|
||||
- /cross-version-linking
|
||||
---
|
||||
26
tests/fixtures/content/get-started/index.md
vendored
Normal file
26
tests/fixtures/content/get-started/index.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: Getting started with HubGit
|
||||
shortTitle: Get started
|
||||
intro: 'This is the intro'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
layout: product-landing
|
||||
introLinks:
|
||||
quickstart: /get-started/quickstart
|
||||
featuredLinks:
|
||||
guides:
|
||||
- /get-started/quickstart/hello-world
|
||||
popular:
|
||||
- /get-started/foo/bar
|
||||
guideCards:
|
||||
- /get-started/foo/autotitling
|
||||
children:
|
||||
- /quickstart
|
||||
- /foo
|
||||
communityRedirect:
|
||||
name: Provide HubGit Feedback
|
||||
href: 'https://hubgit.com/orgs/community/discussions/categories/get-started'
|
||||
---
|
||||
27
tests/fixtures/content/get-started/quickstart/hello-world.md
vendored
Normal file
27
tests/fixtures/content/get-started/quickstart/hello-world.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: Hello World
|
||||
intro: 'Follow this Hello World exercise to get started with {% data variables.product.product_name %}.'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
type: quick_start
|
||||
topics:
|
||||
- Pull requests
|
||||
- Fundamentals
|
||||
miniTocMaxHeadingLevel: 3
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
This is just a test.
|
||||
|
||||
{% ifversion volvo %}
|
||||
Ove loves Volvos.
|
||||
{% else %}
|
||||
Apparently, a Saab it is.
|
||||
{% endif %}
|
||||
|
||||
Try changing the current version from "Free, Pro, & Team" to something
|
||||
like "Enterprise Server X.Y". It should change the above sentence.
|
||||
11
tests/fixtures/content/get-started/quickstart/index.md
vendored
Normal file
11
tests/fixtures/content/get-started/quickstart/index.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: Quickstart
|
||||
intro: 'Get started using {% data variables.product.product_name %} to manage Git repositories and collaborate with others.'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
ghec: '*'
|
||||
children:
|
||||
- /hello-world
|
||||
---
|
||||
59
tests/fixtures/content/index.md
vendored
Normal file
59
tests/fixtures/content/index.md
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: '{% data variables.product.product_name %}{% ifversion fpt or ghec%}.com{% endif %} Fixture Documentation'
|
||||
featuredLinks:
|
||||
gettingStarted:
|
||||
- /get-started/foo/hello-world
|
||||
popular:
|
||||
- get-started
|
||||
redirect_from:
|
||||
- /olden-days
|
||||
versions: '*'
|
||||
children:
|
||||
# The list of childen in the fixtures has to be the same names
|
||||
# as we use in the real content. It can have fewer but can't include
|
||||
# anything that the real `/content/index.md` doesn't contain for this.
|
||||
# The reason is that the `npm run build` compiles a list of rewrites
|
||||
# so that URLs like `/en/get-started/anything` can be treated,
|
||||
# as if the URL had been `/en/free-pro-team@latest/get-started/anything`.
|
||||
- search
|
||||
- get-started
|
||||
# - account-and-profile
|
||||
# - authentication
|
||||
# - repositories
|
||||
# - admin
|
||||
# - billing
|
||||
# - site-policy
|
||||
# - organizations
|
||||
# - code-security
|
||||
# - pull-requests
|
||||
# - issues
|
||||
# - actions
|
||||
# - copilot
|
||||
# - codespaces
|
||||
# - packages
|
||||
# - search-github
|
||||
# - developers
|
||||
# - rest
|
||||
# - graphql
|
||||
# - github-cli
|
||||
# - discussions
|
||||
# - sponsors
|
||||
# - communities
|
||||
# - pages
|
||||
# - education
|
||||
# - desktop
|
||||
# - early-access
|
||||
# - support
|
||||
childGroups:
|
||||
- name: Get started
|
||||
octicon: RocketIcon
|
||||
children:
|
||||
- get-started
|
||||
|
||||
externalProducts:
|
||||
electron:
|
||||
id: mothership
|
||||
name: GitHub itself
|
||||
href: 'https://github.com'
|
||||
external: true
|
||||
---
|
||||
10
tests/fixtures/content/search/index.md
vendored
Normal file
10
tests/fixtures/content/search/index.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: Search
|
||||
hidden: true
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
---
|
||||
|
||||
3
tests/fixtures/data/features/volvo.yml
vendored
Normal file
3
tests/fixtures/data/features/volvo.yml
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
2
tests/fixtures/data/reusables/enterprise_deprecation/deprecation_details.md
vendored
Normal file
2
tests/fixtures/data/reusables/enterprise_deprecation/deprecation_details.md
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, <a href="/enterprise/admin/guides/installation/upgrading-github-enterprise/">upgrade to the latest version of GitHub Enterprise</a>.
|
||||
For help with the upgrade, <a href="https://enterprise.github.com/support">contact GitHub Enterprise support</a>.
|
||||
1
tests/fixtures/data/reusables/enterprise_deprecation/version_was_deprecated.md
vendored
Normal file
1
tests/fixtures/data/reusables/enterprise_deprecation/version_was_deprecated.md
vendored
Normal file
@@ -0,0 +1 @@
|
||||
This version of GitHub Enterprise was discontinued on
|
||||
1
tests/fixtures/data/reusables/enterprise_deprecation/version_will_be_deprecated.md
vendored
Normal file
1
tests/fixtures/data/reusables/enterprise_deprecation/version_will_be_deprecated.md
vendored
Normal file
@@ -0,0 +1 @@
|
||||
This version of GitHub Enterprise will be discontinued on
|
||||
3
tests/fixtures/data/reusables/policies/translation.md
vendored
Normal file
3
tests/fixtures/data/reusables/policies/translation.md
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
This document is translated from English. In the event of any conflict, uncertainty, or apparent inconsistency between this version and the English version(s) of this document, the English version is the controlling version.
|
||||
|
||||
If you have suggestions to improve our translation, please <a href="https://github.com/github/site-policy/issues">open an issue in our site-policy repository</a>.
|
||||
267
tests/fixtures/data/ui.yml
vendored
Normal file
267
tests/fixtures/data/ui.yml
vendored
Normal file
@@ -0,0 +1,267 @@
|
||||
meta:
|
||||
default_description: Get started, troubleshoot, and make the most of GitHub. Documentation for new users, developers, administrators, and all of GitHub's products.
|
||||
header:
|
||||
github_docs: GitHub Docs
|
||||
contact: Contact
|
||||
notices:
|
||||
ghae_silent_launch: GitHub AE is currently under limited release.
|
||||
release_candidate:
|
||||
# The version name is rendered before the below text via includes/header-notification.html
|
||||
' is currently available as a release candidate. For more information, see "<a href="/admin/overview/about-upgrades-to-new-releases">About upgrades to new releases</a>."'
|
||||
localization_complete:
|
||||
We publish frequent updates to our documentation, and translation of this page may still be in progress.
|
||||
For the most current information, please visit the
|
||||
<a id="to-english-doc" href="/en">English documentation</a>.
|
||||
early_access: 📣 Please <b>do not share</b> this URL publicly. This page contains content about an early access feature.
|
||||
release_notes_use_latest: Please use the latest release for the latest security, performance, and bug fixes.
|
||||
# GHES release notes
|
||||
ghes_release_notes_upgrade_patch_only: 📣 This is not the <a href="#{{ latestPatch }}">latest patch release</a> of Enterprise Server.
|
||||
ghes_release_notes_upgrade_release_only: 📣 This is not the <a href="/enterprise-server@{{ latestRelease }}/admin/release-notes">latest release</a> of Enterprise Server.
|
||||
ghes_release_notes_upgrade_patch_and_release: 📣 This is not the <a href="#{{ latestPatch }}">latest patch release</a> of this release series, and this is not the <a href="/enterprise-server@{{ latestRelease }}/admin/release-notes">latest release</a> of Enterprise Server.
|
||||
sign_up_cta: Sign up
|
||||
menu: Menu
|
||||
picker:
|
||||
language_picker_default_text: Choose a language
|
||||
product_picker_default_text: All products
|
||||
version_picker_default_text: Choose a version
|
||||
release_notes:
|
||||
banner_text: GitHub began rolling these changes out to enterprises on
|
||||
search:
|
||||
need_help: Need help?
|
||||
placeholder: Search GitHub Docs
|
||||
no_results: No results found
|
||||
search_results_for: Search results for
|
||||
no_content: No content
|
||||
matches_found: Results found
|
||||
matches_displayed: Matches displayed
|
||||
search_error: An error occurred trying to perform the search.
|
||||
description: Enter a search term to find it in the GitHub Documentation.
|
||||
label: Search GitHub Docs
|
||||
found_results: Found {n} results
|
||||
one_result_found: Found 1 result
|
||||
homepage:
|
||||
explore_by_product: Explore by product
|
||||
version_picker: Version
|
||||
description: Help for wherever you are on your GitHub journey.
|
||||
toc:
|
||||
getting_started: Getting started
|
||||
popular: Popular
|
||||
startHere: Start here
|
||||
whats_new: What's new
|
||||
videos: Videos
|
||||
all_changelogs: All changelog posts
|
||||
pages:
|
||||
article_version: 'Article version'
|
||||
miniToc: In this article
|
||||
all_enterprise_releases: All Enterprise Server releases
|
||||
about_versions: About versions
|
||||
permissions_statement: Who can use this feature
|
||||
errors:
|
||||
oops: Ooops!
|
||||
something_went_wrong: It looks like something went wrong.
|
||||
we_track_errors: We track these errors automatically, but if the problem persists please feel free to contact us.
|
||||
page_doesnt_exist: It looks like this page doesn't exist.
|
||||
support:
|
||||
still_need_help: Still need help?
|
||||
contact_support: Contact support
|
||||
ask_community: Ask the GitHub community
|
||||
survey:
|
||||
able_to_find: Did this doc help you?
|
||||
yes: Yes
|
||||
no: No
|
||||
comment_yes_label: Let us know what we do well
|
||||
comment_no_label: Let us know what we can do better
|
||||
optional: Optional
|
||||
required: Required
|
||||
email_placeholder: email@example.com
|
||||
email_label: If we can contact you with more questions, please enter your email address
|
||||
email_validation: Please enter a valid email address
|
||||
send: Send
|
||||
feedback: Thank you! We received your feedback.
|
||||
not_support: If you need a reply, please contact support instead.
|
||||
privacy_policy: Privacy policy
|
||||
contribution_cta:
|
||||
title: Help us make these docs great!
|
||||
body: All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.
|
||||
button: Make a contribution
|
||||
or: Or,
|
||||
to_guidelines: learn how to contribute.
|
||||
parameter_table:
|
||||
body: Body parameters
|
||||
default: Default
|
||||
description: Description
|
||||
enum_description_title: Can be one of
|
||||
headers: Headers
|
||||
name: Name
|
||||
path: Path parameters
|
||||
query: Query parameters
|
||||
required: Required
|
||||
see_preview_notice: See preview notice
|
||||
see_preview_notices: See preview notices
|
||||
type: Type
|
||||
single_enum_description: Value
|
||||
products:
|
||||
graphql:
|
||||
reference:
|
||||
implements: Implements
|
||||
fields: Fields
|
||||
arguments: Arguments
|
||||
name: Name
|
||||
type: Type
|
||||
description: Description
|
||||
input_fields: Input fields
|
||||
return_fields: Return fields
|
||||
implemented_by: Implemented by
|
||||
values: Values
|
||||
possible_types: Possible types
|
||||
preview_notice: Preview notice
|
||||
deprecation_notice: Deprecation notice
|
||||
preview_period: During the preview period, the API may change without notice.
|
||||
overview:
|
||||
preview_header: 'To toggle this preview and access the following schema members, you must provide a custom media type in the `Accept` header:'
|
||||
preview_schema_members: 'Previewed schema members'
|
||||
announced: Announced
|
||||
updates: Updates
|
||||
rest:
|
||||
banner:
|
||||
api_versioned: The REST API is now versioned.
|
||||
api_version_info: For more information, see "<a href="{{ versionWithApiVersion }}/rest/overview/api-versions">About API versioning</a>."
|
||||
ghes_api_versioned: After a site administrator upgrades your Enterprise Server instance to {{ firstGhesReleaseWithApiVersions.versionTitle }} or later, the REST API will be versioned. To learn how to find your instance's version, see "<a href="/{{ currentVersion }}/get-started/learning-about-github/about-versions-of-github-docs#github-enterprise-server">About versions of GitHub Docs</a>".
|
||||
versioning:
|
||||
about_versions: About REST API versions
|
||||
reference:
|
||||
in: In
|
||||
description: Description
|
||||
notes: Notes
|
||||
parameters: Parameters
|
||||
response: Response
|
||||
example_response: Example response
|
||||
status_code: Status code
|
||||
http_status_code: HTTP response status codes
|
||||
code_sample: Code sample
|
||||
code_samples: Code samples
|
||||
preview_notice: Preview notice
|
||||
preview_notices: Preview notices
|
||||
preview_header_is_required: This header is <strong>required</strong>
|
||||
preview_notice_to_change: This API is under preview and subject to change
|
||||
works_with: Works with
|
||||
api_reference: REST API reference
|
||||
enum_description_title: Can be one of
|
||||
required: Required
|
||||
headers: Headers
|
||||
query: Query parameters
|
||||
path: Path parameters
|
||||
body: Body parameters
|
||||
webhooks:
|
||||
action_type_switch_error: There was an error switching webhook action types.
|
||||
action_type: Action type
|
||||
availability: Availability
|
||||
webhook_payload_object: Webhook payload object
|
||||
webhook_payload_example: Webhook payload example
|
||||
rephrase_availability:
|
||||
repository: Repositories
|
||||
organization: Organizations
|
||||
app: GitHub Apps
|
||||
business: Enterprises
|
||||
marketplace: GitHub Marketplace
|
||||
sponsors_listing: Sponsored accounts
|
||||
footer:
|
||||
all_rights_reserved: All rights reserved
|
||||
terms: Terms
|
||||
privacy: Privacy
|
||||
security: Security
|
||||
product:
|
||||
heading: Product
|
||||
links:
|
||||
features: Features
|
||||
security: Security
|
||||
enterprise: Enterprise
|
||||
case_studies: Case Studies
|
||||
pricing: Pricing
|
||||
resources: Resources
|
||||
platform:
|
||||
heading: Platform
|
||||
links:
|
||||
developer_api: Developer API
|
||||
partners: Partners
|
||||
atom: Atom
|
||||
electron: Electron
|
||||
github_desktop: GitHub Desktop
|
||||
support:
|
||||
heading: Support
|
||||
links:
|
||||
help: Help
|
||||
community_forum: Community Forum
|
||||
training: Training
|
||||
status: Status
|
||||
contact_github: Contact GitHub
|
||||
company:
|
||||
heading: Company
|
||||
links:
|
||||
about: About
|
||||
blog: Blog
|
||||
careers: Careers
|
||||
press: Press
|
||||
shop: Shop
|
||||
product_landing:
|
||||
quickstart: Quickstart
|
||||
reference: Reference
|
||||
overview: Overview
|
||||
guides: Guides
|
||||
code_examples: Code examples
|
||||
search_code_examples: Search code examples
|
||||
search_results_for: Search results for
|
||||
matches_displayed: Matches displayed
|
||||
show_more: Show more
|
||||
explore_people_and_projects: Explore people and projects
|
||||
sorry: Sorry, there is no result for
|
||||
no_example: It looks like we don't have an example that fits your filter.
|
||||
try_another: Try another filter or add your code example.
|
||||
no_result: Sorry, there are no guides that match your filter.
|
||||
learn: Learn how to add a code example
|
||||
communities_using_discussions: Communities on GitHub.com using discussions
|
||||
add_your_community: Add your community
|
||||
sponsor_community: GitHub Sponsors community
|
||||
supported_releases: Supported releases
|
||||
release_notes_for: Release notes for
|
||||
upgrade_from: Upgrade from
|
||||
browse_all_docs: Browse all docs
|
||||
browse_all: Browse all
|
||||
docs: docs
|
||||
explore_release_notes: Explore release notes
|
||||
view: View all
|
||||
product_guides:
|
||||
start_path: Start learning path
|
||||
learning_paths: '{{ productMap[currentProduct].name }} learning paths'
|
||||
learning_paths_desc: Learning paths are a collection of guides that help you master a particular subject.
|
||||
guides: '{{ productMap[currentProduct].name }} guides'
|
||||
more_guides: more guides
|
||||
load_more: Load more guides
|
||||
all_guides: 'All {{ productMap[currentProduct].name }} guides'
|
||||
filter_instructions: Filter the guide list using these controls
|
||||
filters:
|
||||
type: Type
|
||||
topic: Topic
|
||||
all: All
|
||||
guides_found:
|
||||
multiple: '{n} guides found'
|
||||
one: 1 guide found
|
||||
none: No guides found
|
||||
guide_types:
|
||||
overview: Overview
|
||||
quick_start: Quickstart
|
||||
tutorial: Tutorial
|
||||
how_to: How-to guide
|
||||
reference: Reference
|
||||
learning_track_nav:
|
||||
prev_guide: Previous
|
||||
next_guide: Next
|
||||
more_guides: More guides →
|
||||
current_progress: '{i} of {n} in learning path'
|
||||
toggle_images:
|
||||
off: Images are off, click to show
|
||||
on: Images are on, click to hide
|
||||
hide_single: Hide image
|
||||
show_single: Show image
|
||||
scroll_button:
|
||||
scroll_to_top: Scroll to top
|
||||
2
tests/fixtures/data/variables/product.yml
vendored
Normal file
2
tests/fixtures/data/variables/product.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
product_name: >-
|
||||
{% ifversion ghec %}HubGit Enterprise Cloud{% elsif ghes %}HubGit Enterprise Server{% elsif ghae %}HubGit AE{% else %}HubGit{% endif %}
|
||||
1
tests/fixtures/data/variables/release_candidate.yml
vendored
Normal file
1
tests/fixtures/data/variables/release_candidate.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
version: ''
|
||||
@@ -8,7 +8,9 @@ describe('footer', () => {
|
||||
|
||||
describe('"contact us" link', () => {
|
||||
test('leads to support from articles', async () => {
|
||||
const $ = await getDOM(`/en/${nonEnterpriseDefaultVersion}/issues`)
|
||||
const $ = await getDOM(
|
||||
`/en/${nonEnterpriseDefaultVersion}/get-started/quickstart/hello-world`
|
||||
)
|
||||
expect($('a#contact-us').attr('href')).toBe('https://support.github.com/contact')
|
||||
})
|
||||
|
||||
@@ -20,37 +22,23 @@ describe('footer', () => {
|
||||
|
||||
describe('"contact us" link with nextjs', () => {
|
||||
test('leads to support from articles', async () => {
|
||||
const $ = await getDOM(`/en/${nonEnterpriseDefaultVersion}/issues?nextjs=`)
|
||||
const $ = await getDOM(`/en/${nonEnterpriseDefaultVersion}/get-started?nextjs=`)
|
||||
expect($('a#contact-us').attr('href')).toBe('https://support.github.com/contact')
|
||||
})
|
||||
})
|
||||
|
||||
describe('test redirects for product landing community links pages', () => {
|
||||
test('codespaces product landing page leads to codespaces discussions page', async () => {
|
||||
const $ = await getDOM(`/en/codespaces`)
|
||||
test('codespaces product landing page leads to discussions page', async () => {
|
||||
const $ = await getDOM('/en/get-started')
|
||||
expect($('a#ask-community').attr('href')).toBe(
|
||||
'https://github.com/community/community/discussions/categories/codespaces'
|
||||
)
|
||||
})
|
||||
|
||||
test('sponsors product landing page leads to sponsors discussions page', async () => {
|
||||
const $ = await getDOM(`/en/sponsors`)
|
||||
expect($('a#ask-community').attr('href')).toBe(
|
||||
'https://github.com/community/community/discussions/categories/sponsors'
|
||||
)
|
||||
})
|
||||
|
||||
test('codespaces product landing page leads to discussions discussions page', async () => {
|
||||
const $ = await getDOM(`/en/discussions`)
|
||||
expect($('a#ask-community').attr('href')).toBe(
|
||||
'https://github.com/community/community/discussions/categories/discussions'
|
||||
'https://hubgit.com/orgs/community/discussions/categories/get-started'
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('test redirects for non-product landing community links pages', () => {
|
||||
test('leads to https://github.community/ when clicking on the community link', async () => {
|
||||
const $ = await getDOM(`/en/github/authenticating-to-github`)
|
||||
const $ = await getDOM(`/en/get-started/quickstart/hello-world`)
|
||||
expect($('a#ask-community').attr('href')).toBe(
|
||||
'https://github.com/orgs/community/discussions'
|
||||
)
|
||||
36
tests/rendering-fixtures/internal-links.js
Normal file
36
tests/rendering-fixtures/internal-links.js
Normal file
@@ -0,0 +1,36 @@
|
||||
import { getDOM } from '../helpers/e2etest.js'
|
||||
import enterpriseServerReleases from '../../lib/enterprise-server-releases.js'
|
||||
import { allVersions } from '../../lib/all-versions.js'
|
||||
|
||||
describe('autotitle', () => {
|
||||
test('internal links with AUTOTITLE resolves', async () => {
|
||||
const $ = await getDOM('/get-started/foo/autotitling')
|
||||
const firstLink = $('#article-contents a[href]')
|
||||
expect(firstLink.text()).toBe('Hello World')
|
||||
})
|
||||
})
|
||||
|
||||
describe('cross-version-links', () => {
|
||||
test.each(Object.keys(allVersions))(
|
||||
'links to free-pro-team should be implicit even on %p',
|
||||
async (version) => {
|
||||
const URL = `/${version}/get-started/foo/cross-version-linking`
|
||||
const $ = await getDOM(URL)
|
||||
const links = $('#article-contents a[href]')
|
||||
|
||||
// Tests that the hardcoded prefix is always removed
|
||||
const firstLink = links.filter(function () {
|
||||
return $(this).text() === 'Hello world always in free-pro-team'
|
||||
})
|
||||
expect(firstLink.attr('href')).toBe('/en/get-started/quickstart/hello-world')
|
||||
|
||||
// Tests that the second link always goes to enterprise-server@X.Y
|
||||
const secondLink = links.filter(function () {
|
||||
return $(this).text() === 'Autotitling page always in enterprise-server latest'
|
||||
})
|
||||
expect(secondLink.attr('href')).toBe(
|
||||
`/en/enterprise-server@${enterpriseServerReleases.latest}/get-started/quickstart/hello-world`
|
||||
)
|
||||
}
|
||||
)
|
||||
})
|
||||
Reference in New Issue
Block a user