diff --git a/e2etests-cli/main_test.go b/e2etests-cli/main_test.go
index d58e81dd7..ba496253a 100644
--- a/e2etests-cli/main_test.go
+++ b/e2etests-cli/main_test.go
@@ -299,6 +299,56 @@ scenarios: {
assert.ErrorString(t, err, `failed to wait xmain test: e2etests-cli/d2: failed to compile target-invalid.d2: render target "b" not found`)
},
},
+ {
+ name: "target-nested-index",
+ run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) {
+ writeFile(t, dir, "target-nested-index.d2", `a
+layers: {
+ l1: {
+ b
+ layers: {
+ index: {
+ c
+ layers: {
+ l3: {
+ d
+ }
+ }
+ }
+ }
+ }
+}`)
+ err := runTestMain(t, ctx, dir, env, "--target", `l1.index.l3`, "target-nested-index.d2", "target-nested-index.svg")
+ assert.Success(t, err)
+ svg := readFile(t, dir, "target-nested-index.svg")
+ assert.Testdata(t, ".svg", svg)
+ },
+ },
+ {
+ name: "target-nested-index2",
+ run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) {
+ writeFile(t, dir, "target-nested-index2.d2", `a
+layers: {
+ index: {
+ b
+ layers: {
+ nest1: {
+ c
+ scenarios: {
+ nest2: {
+ d
+ }
+ }
+ }
+ }
+ }
+}`)
+ err := runTestMain(t, ctx, dir, env, "--target", `index.nest1.nest2`, "target-nested-index2.d2", "target-nested-index2.svg")
+ assert.Success(t, err)
+ svg := readFile(t, dir, "target-nested-index2.svg")
+ assert.Testdata(t, ".svg", svg)
+ },
+ },
{
name: "multiboard/life",
run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) {
diff --git a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg
new file mode 100644
index 000000000..1ab9a830e
--- /dev/null
+++ b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg
@@ -0,0 +1,95 @@
+
diff --git a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg
new file mode 100644
index 000000000..640d152bd
--- /dev/null
+++ b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg
@@ -0,0 +1,95 @@
+a
+
+
+