import java.util.*;

public class gfg {
	public static void main(String args[]) {
		Scanner input = new Scanner(System.in);
		int t = input.nextInt();
		while(t-->0) {
			int n = input.nextInt();
			int m = input.nextInt();
			char arr[][] = new char[n][m];
			for(int i=0;i<n;i++) {
				String temp = input.next();
				for(int j=0;j<m;j++) {
					arr[i][j] = temp.charAt(j); 
				}
			}
			func(arr,n,m);
		}
	}
	static void func(char[][] arr,int n,int m) {
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				if(arr[i][j]=='B') {
					if(i-1>0) {
						if(arr[i-1][j]=='.') {
							arr[i-1][j] = '#';
						}
						else if(arr[i-1][j]=='G') {
							System.out.println("No");
							return;
						}
					}
					if(i+1<n) {
						if(arr[i+1][j]=='.') {
							arr[i+1][j] = '#';
						}
						else if(arr[i+1][j]=='G') {
							System.out.println("No");
							return;
						}
					}
					if(j-1>0) {
						if(arr[i][j-1]=='.') {
							arr[i][j-1] = '#';
						}
						else if(arr[i][j-1]=='G') {
							System.out.println("No");
							return;
						}
					}
					if(j+1<m) {
						if(arr[i][j+1]=='.') {
							arr[i][j+1] = '#';
						}
						else if(arr[i][j+1]=='G') {
							System.out.println("No");
							return;
						}
					}
				}
			}
		}
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				if(arr[i][j]=='G') {
					boolean vis[][] = new boolean[n][m];
					if(func(i,j,arr,vis,n,m)==false) {
//						System.out.println("i: "+i+", "+"j: "+j);
//						print(arr,n,m);
//						print(vis,n,m);
						System.out.println("No");
						return;
					}
				}
			}
		}
		System.out.println("Yes");
	}
	static boolean func(int i,int j,char arr[][],boolean vis[][],int n,int m) {
		if(i==n-1 && j==m-1) {
			return true;
		}
		vis[i][j] = true;
		if(i-1>=0 && (arr[i-1][j]=='.' || arr[i-1][j]=='G') && vis[i-1][j]==false) {
			return func(i-1,j,arr,vis,n,m);
		}
		if(i+1<n && (arr[i+1][j]=='.' || arr[i+1][j]=='G') && vis[i+1][j]==false) {
			return func(i+1,j,arr,vis,n,m);
		}
		if(j-1>=0 && (arr[i][j-1]=='.' || arr[i][j-1]=='G') && vis[i][j-1]==false) {
			return func(i,j-1,arr,vis,n,m);
		}
		if(j+1<m && (arr[i][j+1]=='.' || arr[i][j+1]=='G') && vis[i][j+1]==false) {
			return func(i,j+1,arr,vis,n,m);
		}
		return false;
	}
	static void print(char arr[][],int n,int m) {
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
	static void print(boolean arr[][],int n,int m) {
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
}
