docs: separate two Product and five Technology teams
Build and publish Eldorado documentation / build (pull_request) Successful in 32s
Build and publish Eldorado documentation / build (pull_request) Successful in 32s
This commit is contained in:
1 parent
59b4075113
commit
ecc234234e
5 files changed
+117
-173
No files matched your search
+15
-7
@@ -59,14 +59,22 @@ test('Archify is pinned, licensed and rebuilt, not a remote embed', () => {
|
||||
assert(!wrapper.includes('target="_blank"'));
|
||||
assert(wrapper.includes('Close full-screen diagram'));
|
||||
});
|
||||
test('Product and Technology share seven delivery squads', () => {
|
||||
test('Product owns two teams and Technology owns five separate teams', () => {
|
||||
const spec = JSON.parse(read('diagrams/organization-structure.architecture.json'));
|
||||
const squads = spec.components.filter(n => n.id.startsWith('squad-'));
|
||||
assert.equal(squads.length, 7);
|
||||
for (const dept of ['product','technology']) assert(spec.connections.some(e => e.from === dept && e.to === 'shared-delivery'));
|
||||
for (const squad of squads) {
|
||||
assert(spec.connections.some(e => e.from === 'shared-delivery' && e.to === squad.id));
|
||||
assert(read('docs/organization/structure.mdx').includes(squad.label));
|
||||
const page = read('docs/organization/structure.mdx');
|
||||
assert(!/shared-delivery|squad-/i.test(JSON.stringify(spec)));
|
||||
assert(!/shared squads|share a delivery structure|cross-functional teams/i.test(page));
|
||||
for (const [dept, count, heading, next] of [['product',2,'Product','Technology'],['technology',5,'Technology','Operations']]) {
|
||||
const teams = spec.components.filter(n => n.id.startsWith(`${dept}-team-`));
|
||||
assert.equal(teams.length, count);
|
||||
const section = page.split(`### ${heading}\n`)[1].split(`### ${next}\n`)[0];
|
||||
const rows = section.split('\n').filter(l => l.startsWith('| ')).slice(2);
|
||||
assert.equal(rows.length, count);
|
||||
for (const team of teams) {
|
||||
const parents = spec.connections.filter(e => e.to === team.id);
|
||||
assert.deepEqual(parents.map(e => e.from), [dept]);
|
||||
assert(rows.some(row => row.startsWith(`| ${team.label} |`)));
|
||||
}
|
||||
}
|
||||
});
|
||||
test('organization page presents an operating model, not research notes', () => {
|
||||
|
||||
+5
-2
@@ -21,10 +21,13 @@ if (process.argv.includes('--build')) {
|
||||
}
|
||||
assert(!readdirSync('build/diagrams', {recursive: true}).some(f => f.endsWith('.delivery.json')), 'Private build receipts must not be published');
|
||||
const diagram = read('build/diagrams/organization-structure/index.html');
|
||||
assert(diagram.includes('Coordinates') && diagram.includes('node-technology'));
|
||||
assert(diagram.includes('node-product-team-2') && diagram.includes('node-technology-team-5'));
|
||||
assert(!diagram.includes('shared-delivery'));
|
||||
assert(!/A: placement|E: careers|J: advertised/.test(diagram));
|
||||
assert(!diagram.includes('Example leadership'));
|
||||
for (const id of ['discovery','orders','seller','payments','trust','data','platform']) assert(diagram.includes(`node-squad-${id}`));
|
||||
for (const [dept, count] of [['product', 2], ['technology', 5]]) {
|
||||
for (let i = 1; i <= count; i++) assert(diagram.includes(`node-${dept}-team-${i}`));
|
||||
}
|
||||
const reporting = read('build/diagrams/organization-reporting/index.html');
|
||||
assert(reporting.includes('AI Architect') && reporting.includes('Leads'));
|
||||
assert(!/A: assumed|J: direct/.test(reporting));
|
||||
|
||||
Reference in new issue
Block a user