diff --git a/.github/workflows/build-auto-generated-files.yml b/.github/workflows/build-auto-generated-files.yml new file mode 100644 index 0000000..c926d91 --- /dev/null +++ b/.github/workflows/build-auto-generated-files.yml @@ -0,0 +1,13 @@ +--- +name: Build Auto-Generated Files +on: + pull_request: + workflow_dispatch: + +jobs: + build-contributors: + name: Build Auto-Generated Files + if: github.repository != 'AdobeDocs/dev-docs-template' + uses: AdobeDocs/adp-devsite-workflow/.github/workflows/build-auto-generated-files.yml@main + secrets: inherit + \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..8c6ddf8 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,36 @@ +--- + name: Lint + on: + pull_request: + branches: [main] + paths: + - 'src/pages/**' + + jobs: + lint: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Lint + id: lint + continue-on-error: true + run: npx --yes github:AdobeDocs/adp-devsite-utils runLint -v + + - name: Post Linter Report to PR + if: always() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_ID: ${{ github.event.pull_request.number }} + GITHUB_REPOSITORY: ${{ github.repository }} + run: | + npm install --no-save github:AdobeDocs/adp-devsite-scripts + node node_modules/adp-devsite-scripts/linter-bot/postLinterReport.js + + - name: Fail if linter found errors + if: steps.lint.outcome == 'failure' + run: exit 1 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3985e46..04ce07a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,20 @@ # npm node_modules +package-lock.json +yarn-error.log +.pnp.* +.yarn/* + +# keep in repo +!.gitignore +!.yarn.lock +!.yarnrc.yml +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions # gatsby files .env @@ -33,3 +47,7 @@ github_conf # local dev tmp + +# Added by update-bot +linter-output.txt +linter-report.txt diff --git a/dev.mjs b/dev.mjs deleted file mode 100644 index 84605fa..0000000 --- a/dev.mjs +++ /dev/null @@ -1,39 +0,0 @@ -// content/docs -// serve static on 3001 - -import express from 'express'; -import fs from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; -import { execSync } from 'child_process'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - -const PORT = process.env.DEV_PORT || 3003; - -const getCurrentBranch = () => { - try { - return execSync('git branch --show-current', { encoding: 'utf8' }).trim(); - } catch (error) { - console.warn('Could not determine git branch, defaulting to "main"'); - return 'main'; - } -}; - -const currentBranch = getCurrentBranch(); -const DOCS_DIRECTORY = process.env.DIRECTORY || './src/pages'; - -const app = express(); -console.log(path.resolve(__dirname, `./${DOCS_DIRECTORY}`)); -app.use( - express.static(path.resolve(__dirname, `./${DOCS_DIRECTORY}`), { - setHeaders: (res) => { - res.setHeader('last-modified', new Date().toGMTString()); - res.setHeader('local-branch-name', currentBranch); - }, - }), -); - -app.listen(PORT, () => { - console.debug(`Docs dev server is running on port ${PORT}`); -}); \ No newline at end of file diff --git a/package.json b/package.json index acd3323..1d985c1 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,22 @@ "sitePath": "commerce/testing" }, "scripts": { - "dev": "node ./dev.mjs", + "dev": "npx --yes github:AdobeDocs/adp-devsite-utils dev", + "buildNavigation": "npx --yes github:AdobeDocs/adp-devsite-utils buildNavigation -v", + "buildRedirections": "npx --yes github:AdobeDocs/adp-devsite-utils buildRedirections -v", + "renameFiles": "npx --yes github:AdobeDocs/adp-devsite-utils renameFiles -v", + "normalizeLinks": "npx --yes github:AdobeDocs/adp-devsite-utils normalizeLinks -v", + "buildSiteWideBanner": "npx --yes github:AdobeDocs/adp-devsite-utils buildSiteWideBanner -v", + "buildSiteMetadata": "npx --yes github:AdobeDocs/adp-devsite-utils buildSiteMetadata -v", + "buildContributors": "npx --yes github:AdobeDocs/adp-devsite-utils buildContributors -v", "lint": "npx --yes github:AdobeDocs/adp-devsite-utils runLint -v", + "lint:errorOnly": "npx --yes github:AdobeDocs/adp-devsite-utils runLint", "lint:md": "npx --yes markdownlint-cli2 'src/pages/**/*.md' '*.md'", "lint:md:fix": "npx --yes markdownlint-cli2 --fix 'src/pages/**/*.md' '*.md'", + "link:externalLinkOnly": "npx --yes github:AdobeDocs/adp-devsite-utils runLint --external-links-only -v", + "link:checkAllLinks": "npx --yes github:AdobeDocs/adp-devsite-utils runLint --internal-links-only --external-links-only -v", + "redirectCheck:stage": "npx --yes github:AdobeDocs/adp-devsite-utils redirectChecker stage --verbose", + "redirectCheck:prod": "npx --yes github:AdobeDocs/adp-devsite-utils redirectChecker prod --verbose", "test": "npx --yes jest", "test:config": "npx --yes jest tests/config.test.js" }, diff --git a/src/pages/adp-site-metadata.json b/src/pages/adp-site-metadata.json new file mode 100644 index 0000000..59fd870 --- /dev/null +++ b/src/pages/adp-site-metadata.json @@ -0,0 +1 @@ +{"total":3,"offset":0,"limit":3,"data":[{"key":"contributors","value":"src/pages/contributors.json"},{"key":"get-credentials","value":null},{"key":"site-wide-banner","value":null}],":type":"sheet"} \ No newline at end of file diff --git a/src/pages/contributors.json b/src/pages/contributors.json new file mode 100644 index 0000000..4f073e5 --- /dev/null +++ b/src/pages/contributors.json @@ -0,0 +1 @@ +{"total":85,"offset":0,"limit":85,"data":[{"page":"/","avatars":["https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/57922?v=4"],"lastUpdated":"12/2/2025"},{"page":"/config","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4"],"lastUpdated":"12/4/2025"},{"page":"/functional-testing-framework/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/backward-incompatible-changes","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/cicd","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/commands/","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/commands/codeception","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/commands/mftf","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/28712019?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/configuration","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/credentials","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/7163132?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/custom-helpers","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"11/22/2024"},{"page":"/functional-testing-framework/data","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/debugging","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/extending","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/getting-started","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/git-vs-composer-install","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/interactive-pause","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/merge-points/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/merge-points/extend-action-groups","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/merge-points/extend-data","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/merge-points/extend-tests","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/merge-points/merge-action-groups","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/merge-points/merge-data","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/merge-points/merge-pages","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/merge-points/merge-sections","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/merge-points/merge-tests","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/merging","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/metadata","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/29927318?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/mftf-tests-packaging","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/page","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/4/2025"},{"page":"/functional-testing-framework/reporting","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/resources/","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/section/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/section/locator-functions","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/section/parameterized-selectors","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/suite","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/test-writing/","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/test-writing/best-practices","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/4/2025"},{"page":"/functional-testing-framework/test-writing/selectors","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test-writing/test-isolation","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/test-writing/test-modularity","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test-writing/test-prep","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test-writing/tips-tricks","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test-writing/using-suites","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/test/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/test/action-group-best-practices","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/functional-testing-framework/test/action-groups","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test/actions","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test/annotations","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/test/assertions","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/functional-testing-framework/troubleshooting","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/two-factor-authentication","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/87003041?v=4","https://avatars.githubusercontent.com/u/6391769?v=4","https://avatars.githubusercontent.com/u/665104?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/update","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/functional-testing-framework/versioning","avatars":["https://avatars.githubusercontent.com/u/28712019?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"5/7/2025"},{"page":"/guide/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/45772453?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/97607802?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/4518013?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/annotations/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/97607802?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/930199?v=4","https://avatars.githubusercontent.com/u/11199531?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/annotations/magento-app-area","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/annotations/magento-app-isolation","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/integration/annotations/magento-cache","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/600190?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/annotations/magento-components-dir","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/annotations/magento-config-fixture","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/annotations/magento-data-fixture","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/4/2025"},{"page":"/guide/integration/annotations/magento-db-isolation","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/integration/annotations/magento-depends","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/guide/integration/attributes/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/11199531?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/app-area","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/34573954?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/app-isolation","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/integration/attributes/cache","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/components-dir","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/config-fixture","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/data-fixture","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/8163466?v=4","https://avatars.githubusercontent.com/u/11199531?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/data-fixture-before-transaction","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/11199531?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/integration/attributes/db-isolation","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/integration/attributes/indexer-dimension-mode","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/integration/data-fixtures-guide","avatars":["https://avatars.githubusercontent.com/u/11652541?v=4","https://avatars.githubusercontent.com/u/97607802?v=4"],"lastUpdated":"11/25/2025"},{"page":"/guide/js/","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/static/","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/static/analysis","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/98337695?v=4"],"lastUpdated":"12/3/2025"},{"page":"/guide/svc/","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/unit/","avatars":["https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"9/11/2023"},{"page":"/guide/unit/annotations","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/2/2025"},{"page":"/guide/unit/command-line","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4","https://avatars.githubusercontent.com/u/105285471?v=4"],"lastUpdated":"4/7/2025"},{"page":"/guide/unit/phpstorm","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"7/10/2024"},{"page":"/guide/unit/writing-testable-code","avatars":["https://avatars.githubusercontent.com/u/12731225?v=4","https://avatars.githubusercontent.com/u/14320591?v=4","https://avatars.githubusercontent.com/u/6089603?v=4","https://avatars.githubusercontent.com/u/13662379?v=4"],"lastUpdated":"12/3/2025"}],":type":"sheet"} \ No newline at end of file