diff --git a/src/testdir/screendump.vim b/src/testdir/screendump.vim
index e1e660b..9812e7e 100644
--- a/src/testdir/screendump.vim
+++ b/src/testdir/screendump.vim
@@ -60,8 +60,8 @@
   call assert_equal([rows, cols], term_getsize(buf))
 
   " Wait for "All" of the ruler in the status line to be shown.
-  " This can be quite slow (e.g. when using valgrind), wait up to 4 seconds.
-  call WaitFor({-> len(term_getline(buf, rows)) >= cols - 1}, 4000)
+  " This can be quite slow (e.g. when using valgrind).
+  call WaitFor({-> len(term_getline(buf, rows)) >= cols - 1})
 
   return buf
 endfunc
@@ -70,7 +70,7 @@
 func StopVimInTerminal(buf)
   call assert_equal("running", term_getstatus(a:buf))
   call term_sendkeys(a:buf, "\<Esc>\<Esc>:qa!\<cr>")
-  call WaitFor('term_getstatus(' . a:buf . ') == "finished"', 3000)
+  call WaitFor('term_getstatus(' . a:buf . ') == "finished"')
   only!
 endfunc
 
diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim
index d47a355..6c3f8a4 100644
--- a/src/testdir/shared.vim
+++ b/src/testdir/shared.vim
@@ -113,14 +113,14 @@
   endif
 endfunc
 
-" Wait for up to a second for "expr" to become true.  "expr" can be a
+" Wait for up to five seconds for "expr" to become true.  "expr" can be a
 " stringified expression to evaluate, or a funcref without arguments.
 " A second argument can be used to specify a different timeout in msec.
 "
 " Return time slept in milliseconds.  With the +reltime feature this can be
 " more than the actual waiting time.  Without +reltime it can also be less.
 func WaitFor(expr, ...)
-  let timeout = get(a:000, 0, 1000)
+  let timeout = get(a:000, 0, 5000)
   " using reltime() is more accurate, but not always available
   if has('reltime')
     let start = reltime()
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 235312e..ce573f9 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1143,7 +1143,7 @@
   let job = job_start([s:python, '-c', 
         \ 'import sys; [sys.stdout.write(".") and sys.stdout.flush() for _ in range(10000)]'], options)
   call assert_equal("run", job_status(job))
-  call WaitFor('len(join(getline(1, "$"), "")) >= 10000', 3000)
+  call WaitFor('len(join(getline(1, "$"), "")) >= 10000')
   try
     let totlen = 0
     for line in getline(1, '$')
@@ -1506,7 +1506,7 @@
   let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0}
   let job = job_start([s:python, '-c', 'import time;time.sleep(0.5)'], {'exit_cb': 'MyExitTimeCb'})
   let g:exit_cb_val.process = job_info(job).process
-  call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 0', 2000)
+  call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 0')
   let elapsed = reltimefloat(g:exit_cb_val.end)
   call assert_true(elapsed > 0.5)
   call assert_true(elapsed < 1.0)
diff --git a/src/testdir/test_clientserver.vim b/src/testdir/test_clientserver.vim
index 6ef6428..b807ecc 100644
--- a/src/testdir/test_clientserver.vim
+++ b/src/testdir/test_clientserver.vim
@@ -32,7 +32,7 @@
 
   " Takes a short while for the server to be active.
   " When using valgrind it takes much longer.
-  call WaitFor('serverlist() =~ "' . name . '"', 5000)
+  call WaitFor('serverlist() =~ "' . name . '"')
   call assert_match(name, serverlist())
 
   call remote_foreground(name)
diff --git a/src/testdir/test_quotestar.vim b/src/testdir/test_quotestar.vim
index 3a8fdef..b83fbe4 100644
--- a/src/testdir/test_quotestar.vim
+++ b/src/testdir/test_quotestar.vim
@@ -74,20 +74,20 @@
   " by the server.
   let @* = 'no'
   call remote_foreground(name)
-  call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "no"', 3000)
+  call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "no"')
 
   " Set the * register on the server.
   call remote_send(name, ":let @* = 'yes'\<CR>")
-  call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "yes"', 3000)
+  call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "yes"')
 
   " Check that the *-register of this vim instance is changed as expected.
-  call WaitFor('@* == "yes"', 3000)
+  call WaitFor('@* == "yes"')
 
   " Handle the large selection over 262040 byte.
   let length = 262044
   let sample = 'a' . repeat('b', length - 2) . 'c'
   let @* = sample
-  call WaitFor('remote_expr("' . name . '", "len(@*) >= ' . length . '", "", 1)', 3000)
+  call WaitFor('remote_expr("' . name . '", "len(@*) >= ' . length . '", "", 1)')
   let res = remote_expr(name, "@*", "", 2)
   call assert_equal(length, len(res))
   " Check length to prevent a large amount of output at assertion failure.
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 3b95d39..e97ee06 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1061,7 +1061,7 @@
 	\ "set t_ts=",
 	\ ], 'Xscript')
   let buf = RunVimInTerminal('-S Xscript', {})
-  call WaitFor({-> bufnr('Xtextfile') > 0}, 5000)
+  call WaitFor({-> bufnr('Xtextfile') > 0})
   call assert_equal('Xtextfile', expand('%:t'))
   call assert_true(winnr('$') >= 3)
   return buf
diff --git a/src/version.c b/src/version.c
index 51e8259..bc0e513 100644
--- a/src/version.c
+++ b/src/version.c
@@ -763,6 +763,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1697,
+/**/
     1696,
 /**/
     1695,
