import java.io.*;
import java.util.*;
public class Main
{
	boolean flag,visited[][];
	int n,m,totalreds,reds;
	char grid[][];
	ArrayList<Pair> list;
	final int dx[]={0,0,-1,1};
	final int dy[]={-1,1,0,0};
	private void solve()throws Exception
	{
		flag=true;
		n=nextInt();
		m=nextInt();
		grid=new char[n+1][m+1];
		int totalreds=0;
		for(int i=1;i<=n;i++)
		{
			String s=nextLine();
			for(int j=1;j<=m;j++)
			{
				grid[i][j]=s.charAt(j-1);
				if(grid[i][j]=='G')
					totalreds++;
			}
		}

		check();
		if(!flag || reds!=totalreds)
		{
			out.println("No");
			return;
		}

		for(Pair p:list)
		{
			int x=p.first;
			int y=p.second;
			for(int k=0;k<4;k++)
			{
				int x1=x+dx[k];
				int y1=y+dy[k];
				if(x1<1 || x1>n || y1<1 || y1>m)
					continue;
				if(grid[x1][y1]=='G')
				{
					out.println("No");
					return;
				}
				else if(grid[x1][y1]=='.')
					grid[x1][y1]='#';
			}
		}

		check();
		if(reds==totalreds && list.size()==0)
			out.println("Yes");
		else
			out.println("No");
	}
	void check()
	{
		reds=0;
		list=new ArrayList<>();
		visited=new boolean[n+1][m+1];
		if(grid[n][m]!='#')
		dfs(n,m);
	}
	void dfs(int i,int j)
	{
		visited[i][j]=true;
		if(grid[i][j]=='G')
			reds++;
		else if(grid[i][j]=='B')
			list.add(new Pair(i,j));
		for(int k=0;k<4;k++)
		{
			int x1=i+dx[k];
			int y1=j+dy[k];
			if(x1>=1 && x1<=n && y1>=1 && y1<=m && !visited[x1][y1] && grid[x1][y1]!='#')
				dfs(x1,y1);
		}
	}
	class Pair{
	    int first,second;
	    Pair(int a,int b){
	        first=a;
	        second=b;
	    }
	}
	 
	///////////////////////////////////////////////////////////

	public void run()throws Exception
	{
		br=new BufferedReader(new InputStreamReader(System.in));
		st=null;
		out=new PrintWriter(System.out);

		int t=nextInt();
		while(t-->0)
		solve();
		
		br.close();
		out.close();
	}
	public static void main(String args[])throws Exception{
		new Main().run();
	}
	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;
	String nextToken()throws Exception{
		while(st==null || !st.hasMoreTokens())
		st=new StringTokenizer(br.readLine());
		return st.nextToken();
	}
	String nextLine()throws Exception{
		return br.readLine();
	}
	int nextInt()throws Exception{
		return Integer.parseInt(nextToken());
	}
	long nextLong()throws Exception{
		return Long.parseLong(nextToken());
	}
	double nextDouble()throws Exception{
		return Double.parseDouble(nextToken());
	}
}