diff --git a/tests/cases/fourslash/signatureHelpFilteredTriggers02.ts b/tests/cases/fourslash/signatureHelpFilteredTriggers02.ts
new file mode 100644
index 00000000000..e193f919e05
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpFilteredTriggers02.ts
@@ -0,0 +1,36 @@
+///
+
+////function foo(x: T): T {
+//// throw null;
+////}
+////
+////foo(/*1*/"");
+////foo(` ${100/*2*/}`);
+////foo(/*3*/);
+////foo(100 /*4*/)
+////foo([/*5*/])
+////foo({ hello: "hello"/*6*/})
+
+const charMap = {
+ 1: "(",
+ 2: ",",
+ 3: "(",
+ 4: "<",
+ 5: ",",
+ 6: ",",
+}
+
+for (const markerName of Object.keys(charMap)) {
+ const triggerCharacter = charMap[markerName];
+ goTo.marker(markerName);
+ edit.insert(triggerCharacter);
+ verify.noSignatureHelpForTriggerReason({
+ kind: "characterTyped",
+ triggerCharacter,
+ });
+ verify.signatureHelpPresentForTriggerReason({
+ kind: "retrigger",
+ triggerCharacter,
+ });
+ edit.backspace(triggerCharacter.length);
+}
diff --git a/tests/cases/fourslash/signatureHelpFilteredTriggers03.ts b/tests/cases/fourslash/signatureHelpFilteredTriggers03.ts
new file mode 100644
index 00000000000..7b170823610
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpFilteredTriggers03.ts
@@ -0,0 +1,23 @@
+///
+
+////declare class ViewJayEss {
+//// constructor(obj: object);
+////}
+////new ViewJayEss({
+//// methods: {
+//// sayHello/**/
+//// }
+////});
+
+goTo.marker();
+edit.insert("(");
+verify.noSignatureHelpForTriggerReason({
+ kind: "characterTyped",
+ triggerCharacter: "(",
+});
+
+edit.insert(") {},");
+verify.noSignatureHelpForTriggerReason({
+ kind: "characterTyped",
+ triggerCharacter: ",",
+});
diff --git a/tests/cases/fourslash/signatureHelpWithTriggers01.ts b/tests/cases/fourslash/signatureHelpWithTriggers01.ts
new file mode 100644
index 00000000000..ae73b5fe000
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpWithTriggers01.ts
@@ -0,0 +1,31 @@
+///
+
+////declare function foo(x: T, y: T): T;
+////
+////foo/*1*//*2*/;
+////foo(/*3*/100/*4*/);
+////foo/*5*//*6*/();
+
+const charMap = {
+ 1: "(",
+ 2: "<",
+ 3: ",",
+ 4: ",",
+ 5: "(",
+ 6: "<",
+}
+
+for (const markerName of Object.keys(charMap)) {
+ const triggerCharacter = charMap[markerName];
+ goTo.marker(markerName);
+ edit.insert(triggerCharacter);
+ verify.signatureHelpPresentForTriggerReason({
+ kind: "characterTyped",
+ triggerCharacter,
+ });
+ verify.signatureHelpPresentForTriggerReason({
+ kind: "retrigger",
+ triggerCharacter,
+ });
+ edit.backspace(triggerCharacter.length);
+}
diff --git a/tests/cases/fourslash/signatureHelpWithTriggers02.ts b/tests/cases/fourslash/signatureHelpWithTriggers02.ts
new file mode 100644
index 00000000000..cb73237f8fd
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpWithTriggers02.ts
@@ -0,0 +1,38 @@
+///
+
+////declare function foo(x: T, y: T): T;
+////declare function bar(x: U, y: U): U;
+////
+////foo(bar/*1*/)
+
+goTo.marker("1");
+
+edit.insert("(");
+verify.signatureHelp({
+ text: "bar(x: U, y: U): U",
+ triggerReason: {
+ kind: "characterTyped",
+ triggerCharacter: "(",
+ }
+});
+edit.backspace();
+
+edit.insert("<");
+verify.signatureHelp({
+ text: "bar(x: U, y: U): U",
+ triggerReason: {
+ kind: "characterTyped",
+ triggerCharacter: "(",
+ }
+});
+edit.backspace();
+
+edit.insert(",");
+verify.signatureHelp({
+ text: "foo(x: (x: U, y: U) => U, y: (x: U, y: U) => U): (x: U, y: U) => U",
+ triggerReason: {
+ kind: "characterTyped",
+ triggerCharacter: "(",
+ }
+});
+edit.backspace();
\ No newline at end of file