import java.io.*;
import java.util.*;
import java.math.*;
 
public class Solve_Maze_CF
{
	InputReader in;PrintWriter pw;
	int n,m,f,count,good;

	int x[] = {0,0,1,-1};
	int y[] = {1,-1,0,0};
	int vis[][];
	char arr[][];

	boolean isIn(int r,int c)
	{
		return ((r>=0 && r<n) && (c>=0 && c<m));
	}
	void dfs(int xx,int yy)
	{
		vis[xx][yy]=1;
		for(int i=0;i<4;i++)
		{
			if(isIn(xx+x[i],yy+y[i]) && vis[xx+x[i]][yy+y[i]]==0 && arr[xx+x[i]][yy+y[i]]!='#' && arr[xx+x[i]][yy+y[i]]!='B')
			{
				if(arr[xx+x[i]][yy+y[i]]=='G')
					good++;

				dfs(xx+x[i],yy+y[i]);
			}
		}
	}
	void solve(int test) throws Exception
	{
		n=ni();m=ni();f=0;count=0;
		vis = new int[n][m];
		arr = new char[n][m];
		for(int i=0;i<n;i++)
		{
			arr[i] = nln().toCharArray();
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				if(arr[i][j]=='G')
				{
					count++;
				}
				if(arr[i][j]=='B')
				{
					for(int k=0;k<4;k++)
					{
						if(isIn(i+x[k],j+y[k]) && arr[i+x[k]][j+y[k]]=='G')
						{
							pn("No");
							return;
						}
						else if(isIn(i+x[k],j+y[k]) && arr[i+x[k]][j+y[k]]=='.')
						{
							arr[i+x[k]][j+y[k]] = '#';
						}
					}
				}
			}
		}
		good = 0;
		if(arr[n-1][m-1]!='#')
			dfs(n-1,m-1);
		if(good==count)
			pn("Yes");
		else
			pn("No");

	}
	void run() throws Exception
	{
		in = new InputReader();
		pw = new PrintWriter(System.out);
		int test = ni();
		while(test--!=0){solve(test);}
		pw.close();
	}
	public static void main(String[] args) throws Exception
	{
		new Solve_Maze_CF().run();
	}
 
	void p(Object o){pw.print(o);}
	void pn(Object o){pw.println(o);}
	void pn(){pw.println();}
	void spn(Object o){System.out.println(o);};
	String nln() throws Exception {return in.nextLine();}
	int ni() throws Exception {return Integer.parseInt(in.next());}
	double nd() throws Exception {return Double.parseDouble(in.next());}
	long nl() throws Exception {return Long.parseLong(in.next());}
	class InputReader
	{
		BufferedReader br;
		StringTokenizer st;
 
		public InputReader()
		{
			br = new BufferedReader(new InputStreamReader(System.in));
		}
		public InputReader(String s) throws IOException
		{
			br = new BufferedReader(new FileReader(s));
		}
 
		String next() throws Exception
		{
			if(st==null || !st.hasMoreElements())
			{
				try
				{
					st = new StringTokenizer(br.readLine());
				}
				catch(IOException e)
				{
					throw new Exception(e.toString());
				}
			}
			return st.nextToken();
		}
 
		String nextLine() throws Exception
		{
			String str = "";
			try
			{
				str = br.readLine();
			}
			catch(IOException e)
			{
				throw new Exception(e.toString());
			}
			return str;
		}
	}
}
