
import java.util.*;
import java.lang.*;
import java.io.*;
 
public class Main
{
    static void dfs(int n, int m, int i, int j, char[][] g, int[][] off, int[] reach, boolean[][] v){
        v[i][j]=true;
        if(g[i][j]=='#') return ;
        if(g[i][j]=='B') {
            reach[1]++;
            return ;
        }
        if(g[i][j]=='G') reach[0]++;
        for(int o=0;o<4;o++){
            int ni=i+off[o][0];
            int nj=j+off[o][1];
            if(ni>=0 && ni<n && nj>=0 && nj<m){
                if(!v[ni][nj]){
                    dfs(n, m, ni,nj, g, off, reach, v);
                }
            }
        }
    }
	public static void main (String[] args) throws java.lang.Exception
	{
		MyScanner in = new MyScanner();
        out = new PrintWriter(new BufferedOutputStream(System.out));
		int T=in.nextInt();
		int[][] off = {{-1,0},{1,0},{0,-1},{0,1}};
		for(int test=0;test<T;test++){
            int n = in.nextInt();
            int m = in.nextInt();
            char[][] g = new char[n][m]; 
            int gc=0;
            int bc=0;
            for(int i=0;i<n;i++){
                g[i]=in.next().toCharArray();
            }
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    if(g[i][j]=='B'){
                        bc++;
                        for(int o=0;o<4;o++){
                            int ni = i+off[o][0];
                            int nj = j+off[o][1];
                            if(ni>=0 && ni<n && nj>=0 && nj<m){
                                if(g[ni][nj]=='.'){
                                    g[ni][nj]='#';
                                }
                            }
                        }
                    } else if(g[i][j]=='G'){
                        gc++;
                    }
                }
            }
            int[] reach = new int[2];
            boolean[][] v = new boolean[n][m];
            dfs(n,m,n-1,m-1, g, off, reach, v);
            boolean val=true;
            if(reach[1]>0){
                val=false;
            }
            if(reach[0]<gc){
                val=false;
            }
            if(val){
                out.println("Yes");
            } else {
                out.println("No");
            }
		}
		out.close();
	}
	public static PrintWriter out;
      
   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;
 
      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }
 
      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }
 
      int nextInt() {
          return Integer.parseInt(next());
      }
 
      long nextLong() {
          return Long.parseLong(next());
      }
 
      double nextDouble() {
          return Double.parseDouble(next());
      }
 
      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }
 
   }
}