diff --git a/tests/periph_flashpage/main.c b/tests/periph_flashpage/main.c
index f79f08086ecf1413e2f49904e67dc00a6745d2e7..e74e66d77aa1ad8077fdf65a6dce0c6acf3f8bbb 100644
--- a/tests/periph_flashpage/main.c
+++ b/tests/periph_flashpage/main.c
@@ -290,6 +290,35 @@ static int cmd_test(int argc, char **argv)
     return 0;
 }
 
+/**
+ * @brief   Does a write and verify test on last page available
+ *
+ * @note    Since every hardware can have different flash layouts for
+ *          automated testing we always write to the last page available
+ *          so we are independent of the size or layout
+ */
+static int cmd_test_last(int argc, char **argv)
+{
+    (void) argc;
+    (void) argv;
+    char fill = 'a';
+
+    for (unsigned i = 0; i < sizeof(page_mem); i++) {
+        page_mem[i] = (uint8_t)fill++;
+        if (fill > 'z') {
+            fill = 'a';
+        }
+    }
+
+    if (flashpage_write_and_verify((int)FLASHPAGE_NUMOF - 2, page_mem) != FLASHPAGE_OK) {
+        puts("error verifying the content of last page");
+        return 1;
+    }
+
+    puts("wrote local page buffer to last flash page");
+    return 0;
+}
+
 static const shell_command_t shell_commands[] = {
     { "info", "Show information about pages", cmd_info },
     { "dump", "Dump the selected page to STDOUT", cmd_dump },
@@ -302,6 +331,7 @@ static const shell_command_t shell_commands[] = {
     { "erase", "Erase the given page buffer", cmd_erase },
     { "edit", "Write bytes to the local page buffer", cmd_edit },
     { "test", "Write and verify test pattern", cmd_test },
+    { "test_last", "Write and verify test pattern on last page available", cmd_test_last },
     { NULL, NULL, NULL }
 };
 
diff --git a/tests/periph_flashpage/tests/01-run.py b/tests/periph_flashpage/tests/01-run.py
new file mode 100755
index 0000000000000000000000000000000000000000..226c7011d6b9929c0467feecb98634f49b76fe34
--- /dev/null
+++ b/tests/periph_flashpage/tests/01-run.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2018 Federico Pellegrin <fede@evolware.org>
+#
+# This file is subject to the terms and conditions of the GNU Lesser
+# General Public License v2.1. See the file LICENSE in the top level
+# directory for more details.
+
+import sys
+from testrunner import run
+
+
+def testfunc(child):
+    # writes and verifies the last page of the flash
+    child.sendline("test_last")
+    child.expect_exact('wrote local page buffer to last flash page')
+
+
+if __name__ == "__main__":
+    sys.exit(run(testfunc))