diff --git a/tests/frontend/project_default/elements/target.bst b/tests/frontend/project_default/elements/target.bst
new file mode 100644
index 0000000000000000000000000000000000000000..d644c89ba9b2940d716f91665230ed5c8c9e5d9c
--- /dev/null
+++ b/tests/frontend/project_default/elements/target.bst
@@ -0,0 +1,4 @@
+kind: stack
+description: |
+
+  Main stack target for the bst build test
diff --git a/tests/frontend/project_default/elements/target2.bst b/tests/frontend/project_default/elements/target2.bst
new file mode 100644
index 0000000000000000000000000000000000000000..d644c89ba9b2940d716f91665230ed5c8c9e5d9c
--- /dev/null
+++ b/tests/frontend/project_default/elements/target2.bst
@@ -0,0 +1,4 @@
+kind: stack
+description: |
+
+  Main stack target for the bst build test
diff --git a/tests/frontend/project_default/project.conf b/tests/frontend/project_default/project.conf
new file mode 100644
index 0000000000000000000000000000000000000000..630fe5244b569eb95f4f4a4a42179bee09685368
--- /dev/null
+++ b/tests/frontend/project_default/project.conf
@@ -0,0 +1,10 @@
+# Project config for frontend build test
+name: test
+
+element-path: elements
+
+fatal-warnings:
+- bad-element-suffix
+
+defaults:
+ target-element: target2.bst
diff --git a/tests/frontend/project_fail/elements/compose-all.bst b/tests/frontend/project_fail/elements/compose-all.bst
new file mode 100644
index 0000000000000000000000000000000000000000..9b981dd733800dfc3cbfd20df79e51864536df0b
--- /dev/null
+++ b/tests/frontend/project_fail/elements/compose-all.bst
@@ -0,0 +1,10 @@
+kind: compose
+
+depends:
+- fileNAME: import-dev.bst
+  type: build
+
+config:
+  # Dont try running the sandbox, we dont have a
+  # runtime to run anything in this context.
+  integrate: False
diff --git a/tests/frontend/project_fail/elements/import-dev.bst b/tests/frontend/project_fail/elements/import-dev.bst
new file mode 100644
index 0000000000000000000000000000000000000000..152a54667fe9de84c37971819fbb7fafb5df23c1
--- /dev/null
+++ b/tests/frontend/project_fail/elements/import-dev.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+  path: files/dev-files
diff --git a/tests/frontend/project_fail/elements/target.bst b/tests/frontend/project_fail/elements/target.bst
new file mode 100644
index 0000000000000000000000000000000000000000..154c477e6953691d3166626fb89da7214909dc28
--- /dev/null
+++ b/tests/frontend/project_fail/elements/target.bst
@@ -0,0 +1,7 @@
+kind: stack
+description: |
+
+  Main stack target for the bst build test
+
+depends:
+- compose-all.bst
diff --git a/tests/frontend/project_fail/files/dev-files/usr/include/pony.h b/tests/frontend/project_fail/files/dev-files/usr/include/pony.h
new file mode 100644
index 0000000000000000000000000000000000000000..40bd0c2e768fbd9238ce3a7f332c245fd950b64f
--- /dev/null
+++ b/tests/frontend/project_fail/files/dev-files/usr/include/pony.h
@@ -0,0 +1,12 @@
+#ifndef __PONY_H__
+#define __PONY_H__
+
+#define PONY_BEGIN "Once upon a time, there was a pony."
+#define PONY_END "And they lived happily ever after, the end."
+
+#define MAKE_PONY(story)  \
+  PONY_BEGIN \
+  story \
+  PONY_END
+
+#endif /* __PONY_H__ */
diff --git a/tests/frontend/project_fail/project.conf b/tests/frontend/project_fail/project.conf
new file mode 100644
index 0000000000000000000000000000000000000000..854e38693f391e65b8f9af10ee35679e4907ccb0
--- /dev/null
+++ b/tests/frontend/project_fail/project.conf
@@ -0,0 +1,4 @@
+# Project config for frontend build test
+name: test
+
+element-path: elements
diff --git a/tests/frontend/show.py b/tests/frontend/show.py
index d6e153e2b7eae6535fc6ad776f655ba41226007c..107473c098dcc9e5d247cd25dfbfda49877d33fb 100644
--- a/tests/frontend/show.py
+++ b/tests/frontend/show.py
@@ -46,6 +46,33 @@ def test_show_invalid_element_path(cli, datafiles):
         'show',
         "foo.bst"])
 
+
+@pytest.mark.datafiles(DATA_DIR + "_default")
+def test_show_default(cli, datafiles):
+    project = os.path.join(datafiles.dirname, datafiles.basename)
+    prev_dir = os.getcwd()
+    os.chdir(project)
+    result = cli.run(project=project, silent=True, args=[
+        'show'])
+    os.chdir(prev_dir)
+
+    result.assert_success()
+    results = result.output.strip().splitlines()
+    expected = 'buildable ca4321107f0f529170d345af19372c57a6672f62afdcbdd36ca067b67124ef60 target2.bst'
+    if result.output.strip() != expected:
+        raise AssertionError("Expected output:\n{}\nInstead received output:\n{}"
+                             .format(expected, result.output))
+
+
+@pytest.mark.datafiles(DATA_DIR + "_fail")
+def test_show_fail(cli, datafiles):
+    project = os.path.join(datafiles.dirname, datafiles.basename)
+    prev_dir = os.getcwd()
+    os.chdir(project)
+    result = cli.run(project=project, silent=True, args=[
+        'show'])
+    os.chdir(prev_dir)
+
     result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA)