diff --git a/.github/workflows/build-contributors.yml b/.github/workflows/build-contributors.yml new file mode 100644 index 0000000..111cb9b --- /dev/null +++ b/.github/workflows/build-contributors.yml @@ -0,0 +1,11 @@ +--- + name: Build Contributors + on: + pull_request: + workflow_dispatch: + + jobs: + build-contributors: + name: Build Contributors + uses: AdobeDocs/adp-devsite-workflow/.github/workflows/build-contributors.yml@main + secrets: inherit diff --git a/.github/workflows/build-site-metadata.yml b/.github/workflows/build-site-metadata.yml new file mode 100644 index 0000000..631516b --- /dev/null +++ b/.github/workflows/build-site-metadata.yml @@ -0,0 +1,10 @@ +--- +name: Build Site Metadata +on: + pull_request: + workflow_dispatch: + +jobs: + build-site-metadata: + name: Build Site Metadata + uses: AdobeDocs/adp-devsite-workflow/.github/workflows/build-site-metadata.yml@main \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b7799b2..ca7e651 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -30,4 +30,4 @@ jobs: with: env: ${{ inputs.env || 'prod' }} baseSha: ${{ inputs.baseSha || '' }} - deployAll: ${{ inputs.deployAll || true }} + deployAll: ${{ inputs.deployAll || false }} 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..2a83daa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,28 @@ -# OS and IDE generated files + +# OS and IDE generated files # +############################## .DS_Store .vscode .history .idea .editorconfig -.cursor -# npm +# npm yarn 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 @@ -21,15 +36,15 @@ cypress/screenshots # lerna lerna-debug.log -# static -_site - -# Super-linter outputs -super-linter-output -super-linter.log +# local actions +.actrc +.secrets +local-test.yml -# GitHub Actions leftovers -github_conf +# yalc +.yalc +yalc.lock -# local dev -tmp +#txt +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..5269c13 100644 --- a/package.json +++ b/package.json @@ -6,18 +6,24 @@ "type": "git", "url": "https://github.com/AdobeDocs/commerce-testing" }, - "config": { - "sitePath": "commerce/testing" + "author": { + "name": "Tim Kim", + "url": "https://github.com/timkim" }, "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:md": "npx --yes markdownlint-cli2 'src/pages/**/*.md' '*.md'", - "lint:md:fix": "npx --yes markdownlint-cli2 --fix 'src/pages/**/*.md' '*.md'", - "test": "npx --yes jest", - "test:config": "npx --yes jest tests/config.test.js" - }, - "devDependencies": { - "express": "5.2.1" + "lint:errorOnly": "npx --yes github:AdobeDocs/adp-devsite-utils runLint", + "link:skipdeadlinks": "npx --yes github:AdobeDocs/adp-devsite-utils runLint --skip-dead-links -v", + "link:deadlinkonly": "npx --yes github:AdobeDocs/adp-devsite-utils runLint --dead-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" } } 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