self._q_keypresses = self._term._q_keypresses
         with self._path_test.open('r', encoding='utf8') as f:
             self._playbook = tuple(line[:-1] for line in f.readlines())
+        self._playbook_anchors: dict[str, int] = {}
+        for idx, line in enumerate(self._playbook):
+            if line[:1] == '|':
+                self._playbook_anchors[line[1:]] = idx + 1
         self._playbook_idx = -1
         self._play_till_next_log()
 
         while True:
             self._playbook_idx += 1
             line = self._playbook[self._playbook_idx]
-            if line[:1] == '#' or not line.strip():
+            if line[:1] in '#|' or not line.strip():
                 continue
             context, msg = line.split(' ', maxsplit=1)
             if context == 'repeat':
-                start, end = msg.split(':')
+                start_key, end_key = msg.split(' ')
+                start = self._playbook_anchors[start_key]
+                end = self._playbook_anchors[end_key]
                 self._playbook = (self._playbook[:self._playbook_idx + 1]
                                   + self._playbook[int(start):int(end)]
                                   + self._playbook[self._playbook_idx + 1:])
 
 1 $ realname set to: [baz]
 1 $ password set to: [bar]
 1 $ port set to: [6697]
+|conn0
 1 $ connection_state set to: [connecting]
 1 $ connection_state set to: [connected]
+|conn1
 , $ CONNECTED
+|conn2
 1 > CAP LS :302
 1 > USER foobarbazquux 0 * :baz
 1 > NICK :foo
 
 # of all pre-MOTD greeting messages, only process isupports
 0:1 < :foo.bar.baz 001 foo1 :Welcome to the foo.bar.baz network
+|conn3
 0:1 < :foo.bar.baz 002 foo1 :Your host is foo.bar.baz
 0:1 < :foo.bar.baz 003 foo1 :This server was created Jan 1 2020
 0:1 < :foo.bar.baz 004 foo1 foo.bar.baz ircserver-1.0 abc def ghi
 # handle bot query NOTICE
 0:1 < :SaslServ!SaslServ@services.bar.baz NOTICE foo1 :Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
 3 < *** [SaslServ] Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
+|conn4
 
 # check difference in available commands when switching to client window
 > /join #test
 0 #   1) foo.bar.baz :DEBUG
 0 #   2) foo.bar.baz  server
 0 #   3) foo.bar.baz SaslServ
+|conn5
 > /window 1
 > /help
 1 # commands available in this window:
 1 !$ cannot send, connection seems closed
 > /privmsg #test test
 1 !$ not sending, since not in channel
+|conn6
 
 # test setting up second client, but 432 irrecoverably
 > /connect baz.bar.foo ?foo foo:foo
 
 # check that (save TUI tests assuming start on window 0, and no 4 yet) on reconnect, all the same effects can be expected
 > /reconnect
-repeat 21:23
+repeat conn0 conn1
 2,3,4,5,6,7 $ CONNECTED
-repeat 24:78
+repeat conn2 conn3
 1 > JOIN :#testtest
-repeat 78:116
-repeat 126:340
+repeat conn3 conn4
+repeat conn5 conn6
 
 > /quit
 0 <